2012-02-21 90 views
0

我正在写一些应用程序将发送http请求到服务器。我的应用程序将通过定时器发送请求。例如,我需要以2秒的时间间隔发送1类请求,第二类请求 - 10秒等等。 我明白,最好有一个调度程序来推送我的请求。但问题是我如何发送请求和处理响应而不冻结用户界面?我需要BackgroundWorker吗?

p.s.现在我有MyAdapter类,它封装了请求和响应的所有工作,还有MyScheduler类,它通过定时器发送请求。

回答

1

您应该确实使用BackGroundWorker,如果您需要在此期间更新UI,则可以使用Dispatcher.Invoke()方法。

+1

我完全同意@Abbas,我对他/她的建议的唯一评论是Dispatcher.Invoke()可用,如果您的应用程序是WPF应用程序;如果您在Windows窗体下,您可以使用Control.Invoke()从您的BackgroundWorker进程安全地与用户界面进行交互。我最近在这里回答了类似的问题:[link](http://stackoverflow.com/questions/9370655/allowing-user-interaction/9371623#9371623)。你可以看到使用'Control.Invoke()'的例子。 – 2012-02-21 15:12:54

+0

感谢您的补充信息!旁注:'他'是正确的:D – Abbas 2012-02-21 15:14:32

1

但问题是我如何发送请求和处理响应而不冻结用户界面?

您可以定期发送您的请求use timers。如果您在请求成功时需要更新UI,则可能需要使用Dispatcher.InvokeControl.Invoke

1

你有各种各样的在后台执行的工作选择,同时用户界面保持响应: