我正在编写一个连续的轮询循环来监视某些事件发生,然后在UI线程上采取一些操作.
我正在编写以下代码
- public static void HandlePopup(this HostedControl control,string className,string caption,System.Action callback)
- {
- var popupTask = Task.Factory.StartNew(() =>
- {
- Thread.Sleep(5000); // just wait for 5 seconds.
- },CancellationToken.None,TaskCreationOptions.None,TaskScheduler.Default).ContinueWith((prevTask) =>
- {
- AutomationElementCollection collection = null;
- do
- {
- } while (true);
- },TaskContinuationOptions.None,TaskScheduler.FromCurrentSynchronizationContext()).ContinueWith((prevTask) =>
- {
- if (!prevTask.IsFaulted)
- {
- if (control.Invokerequired)
- {
- control.Invoke(callback);
- }
- else
- {
- callback();
- }
- }
- },TaskScheduler.FromCurrentSynchronizationContext());
- try
- {
- ////popupTask.Wait();
- }
- catch (AggregateException ex)
- {
- ex.Handle(exnew =>
- {
- return true;
- });
- }
- }
do while循环现在没有任何代码,因为我想测试一下,如果我无限地运行一个循环,UI不会阻塞,但是,它没有按预期工作,当代码运行这个循环时(永远不会返回) UI冻结并变得无响应,直到我打破了运行.
我该怎么做才能让它在后台默默运行
注意:调用此方法的父级是Web浏览器controlsdocumentcompelte`事件. Web浏览器控件位于Windows窗体应用程序中.