首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UI线程上异步调用同步方法

在UI线程上异步调用同步方法
EN

Stack Overflow用户
提问于 2009-03-10 10:34:30
回答 5查看 1.4K关注 0票数 1

我已经编写了一个检查POP3帐户的类,我希望它在UI线程以外的线程上执行。

为此,我选择了异步路由。

为了从pop3delegate.BeginInvoke(null,null)获得结果,我需要调用EndInvoke,但在UI线程块中执行此操作会导致UI不可用。

我可以使用IAsyncResult对象并检查IsComplete属性,但这涉及到将检查放入一个循环中,这反过来会锁定UI。

我正在寻找的是一种从POP3类获得完成百分比或某种状态的方法,这反过来会更新UI,并允许UI可用于执行其他任务。我还需要在某个时刻调用EndInvoke方法,以便捕获工作线程上抛出的任何异常。

有什么建议吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-10 10:38:26

尝试使用BackgroundWorker类,它的设计就是为了做你需要的事情。

有关msdn的示例和更多详细信息:http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

票数 3
EN

Stack Overflow用户

发布于 2009-03-10 10:38:48

尝试Backgroundworker类。

票数 0
EN

Stack Overflow用户

发布于 2009-03-10 10:38:59

使用BackgroundWorker。它还省去了在UI和后台trhead之间来回编组数据的麻烦,并允许进度通知和取消。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/629610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档