그림을 다운로드하고 나중에 그림 상자에 표시하고 싶습니다.폼이 얼어 붙는 것을 방지하십시오.
는 처음 나는 다음과 같이했다 :
WebClient client = new WebClient();
client.DownloadFile(url, localFile);
pictureBox2.Picture = localFile;
그러나 다운로드 앱이 좀 동결을 수행하는 동안 그 때문에 시간 동안 완벽하지이었다.
그때 나는이 변경 :public class ParamForDownload
{
public string Url { get; set; }
public string LocalFile { get; set; }
}
ParamForDownload param = new ParamForDownload()
{
Url = url,
LocalFile = localFile
};
ThreadStart starter = delegate { DownloadMap (param); };
new Thread(starter).Start();
pictureBox2.Picture = localFile;
private static void DownloadMap(ParamForDownload p)
{
WebClient client = new WebClient();
client.DownloadFile(p.Url, p.LocalFile);
}
을하지만 지금은 파일이 스레드 및 파일에 무언가가 다운로드됩니다 같은 시간에 액세스 할 수 있기 때문에 "종료 스레드 대기"와 같은 뭔가를해야 DownloadMap 메서드에 의해.
문제를 해결하는 데 가장 좋은 시간은 언제입니까?
BackgroundWorker에 당신이 검색하는 것은 분명하다. 방금 사용 했으므로 사용하기가 쉽습니다. DoWork 이벤트에 무언가를 추가하고 결과를 e.Result에 넣은 다음이 값을 RunWorkerCompleted 이벤트에 사용하십시오. 또는 장기 실행 기능이 더 복잡한 경우에는 ((MethodInvoker) e.Argument) .Invoke(); 장기 실행 기능 내에서 BeginInvoke를 사용하여 GUI 요소를 업데이트하십시오. GUI 스레드에서 무언가가 진행되고 있는지 판별하려면 backgroundWorker.IsBusy; – Oliver
자세한 내용은 다음을 참조하십시오. http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx – Oliver
@Oliver : 사실, 그들은 꽤 개발자 친화적이며, 우리를위한 우리의 일. – ThePower