C# webClient.DownloadDataCompleted事件
小而简单的问题(奇怪的是,我在这里或谷歌上都找不到答案)。 当webClient.DownloadDataCompleted引发事件时,它是在ui线程上引发还是在DownloadDataAsyn线程上引发?意思是我需要使用beginInvoke(winform)来更新ui或直接访问ui控件C# webClient.DownloadDataCompleted事件,c#,multithreading,C#,Multithreading,小而简单的问题(奇怪的是,我在这里或谷歌上都找不到答案)。 当webClient.DownloadDataCompleted引发事件时,它是在ui线程上引发还是在DownloadDataAsyn线程上引发?意思是我需要使用beginInvoke(winform)来更新ui或直接访问ui控件 当然我可以测试它,但这是一个基本问题:事件处理程序通常在执行的线程上引发,对吗?所以我怀疑这里确实需要beginInvoke,如果不是,原因是什么?WebClient知道当前线程的同步上下文 如果在UI线程上
当然我可以测试它,但这是一个基本问题:事件处理程序通常在执行的线程上引发,对吗?所以我怀疑这里确实需要beginInvoke,如果不是,原因是什么?WebClient知道当前线程的同步上下文 如果在UI线程上调用DownloadDataAsync,DownloadDataCompleted将发布到该UI线程 UI线程以外的线程通常没有同步上下文,在此类线程上启动DownloadDataAsync将导致DownloadDataCompleted在任何可用线程上运行
“简而言之,C#5.0”这本书描述了富客户端中的同步上下文。这取决于调用
DownloadDataAsync
的位置。如果您从UI线程调用它,您应该不会有问题。