我已经编写了一个检查POP3帐户的类,我希望它在UI线程以外的线程上执行。
为此,我选择了异步路由。
为了从pop3delegate.BeginInvoke(null,null)获得结果,我需要调用EndInvoke,但在UI线程块中执行此操作会导致UI不可用。
我可以使用IAsyncResult对象并检查IsComplete属性,但这涉及到将检查放入一个循环中,这反过来会锁定UI。
我正在寻找的是一种从POP3类获得完成百分比或某种状态的方法,这反过来会更新UI,并允许UI可用于执行其他任务。我还需要在某个时刻调用EndInvoke方法,以便捕获工作线程上抛出的任何异常。
有什么建议吗?
发布于 2009-03-10 10:38:26
尝试使用BackgroundWorker类,它的设计就是为了做你需要的事情。
有关msdn的示例和更多详细信息:http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx
发布于 2009-03-10 10:38:48
尝试Backgroundworker类。
发布于 2009-03-10 10:38:59
使用BackgroundWorker。它还省去了在UI和后台trhead之间来回编组数据的麻烦,并允许进度通知和取消。
https://stackoverflow.com/questions/629610
复制相似问题