【发布时间】:2009-03-10 20:49:30
【问题描述】:
我编写了一个检查 POP3 帐户的类,我希望它在 UI 线程以外的线程上执行。
为此,我选择了异步路由。
为了从 pop3delegate.BeginInvoke(null,null) 获取结果,我需要调用 EndInvoke,但在 UI 线程中执行此操作会导致 UI 无法使用。
我可以使用 IAsyncResult 对象并检查 IsComplete 属性,但这涉及放入一个检查循环,这反过来又锁定了 UI。
我正在寻找一种从 POP3 类中获取完成百分比或某种状态的方法,这反过来会更新 UI 并允许 UI 可用于执行其他任务。我还需要在某个时候调用 EndInvoke 方法,以捕获工作线程上抛出的任何异常。
有什么建议吗?
【问题讨论】:
标签: c# multithreading asynchronous