【发布时间】:2009-06-24 01:54:30
【问题描述】:
假设我正在调用一些我无法控制的 Web 服务方法。这种方法需要很长时间才能运行,而且开发 Web 服务的人也没有想到要包含异步版本。
在 C#/winforms 中为此类方法创建异步包装器的最佳方法是什么?
目前我正在使用 ThreadPool 来运行 webservice 方法,然后在 webservice 完成时调用一个事件。像这样。
DoWorkAsync() {
Webservice.LongMethod()
WorkCompleteEvent()
}
但是,这似乎并不理想。例如,如果我尝试从事件处理程序修改表单控件,我会收到一条警告,提示我不要从其他线程等执行此操作。
有没有人有其他解决这个问题的建议?
【问题讨论】:
标签: c# winforms asynchronous event-handling