Silverlight:在等待用户反馈时停止线程

时间:2010-05-27 12:58:04

标签: silverlight

在用户单击Silverlight中的某些按钮之前,是否可以停止当前线程? E.g。

var clicked = false;
ShowDialog(EventOnClosed => clicked = true);
while (!clicked) {};
return;

P.S。我知道正确的方法。我只是好奇是否有办法停止然后继续Silverlight执行流程。

P.P.S。只是为了更具体。想象一下javascript alert()用于消息的项目。如何用Silverlight消息框替换“return Invoke(”alert('')“)”?你是否改变了所有500个地方以使用正确的异步技术?

2 个答案:

答案 0 :(得分:3)

不,不是,即使你这样做,你肯定也不想像这样占用CPU。

在Silverlight中,你真的需要习惯以异步方式编程。

void SomeContainingFunc(Action callBack)
{
  ShowDialog(EventOnClosed => callBack()))
} 

在完成异步操作后,无论调用什么并希望代码继续: -

void SomeCaller()
{
  // ... do some intial stuff here
  Action callBack = () =>
  {
    //.. code to happen after async call completed
  }
  SomeContainingFunc(callBack);
}

答案 1 :(得分:1)

您尝试做的是停止(或更具体地暂停)UI线程 - 在任何情况下这都不是一个好主意,特别是如果您正在等待用户点击某些内容!

只要做到“正确的方式”。