0
스레드를 차단하여 양식의 구성 요소를 업데이트하려고합니다.C# 양식 스레드를 차단하지 않고 진행 막대를 업데이트하십시오.
내 프로그램은 DotNetZip을 사용하여 파일을 아카이브에 추가하며 진행률을 보여주기 위해 진행률 막대를 업데이트하려고합니다.
SaveProgress 메서드는 Save()가 시작될 때 호출됩니다. 각 항목이 쓰여지기 전과 저장()이 완료 될 때.
레이블이 업데이트되지 않고 progressBar1이 업데이트되지 않습니다.
private void buttonCompress_Click(object sender, EventArgs e)
{
if ((folderBrowserDialog1.ShowDialog() == DialogResult.OK) && (saveFileDialog1.ShowDialog() == DialogResult.OK))
{
buttonCompress.Enabled = false;
String DirectoryToZip = folderBrowserDialog1.SelectedPath;
String ZipFileToCreate = saveFileDialog1.FileName;
using (ZipFile zip = new ZipFile())
{
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.Default;
zip.SaveProgress += SaveProgress;
zip.StatusMessageTextWriter = System.Console.Out;
zip.AddDirectory(DirectoryToZip); // recurses subdirectories
zip.Save(ZipFileToCreate);
}
}
}
배경 작업자 사용 ... http://www.dotnetperls.com/backgroundworker ... http://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29. aspx? cs-save-lang = 1 & cs-lang = csharp # 코드 스 니펫 -9 – Prix