在用户单击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个地方以使用正确的异步技术?
答案 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线程 - 在任何情况下这都不是一个好主意,特别是如果您正在等待用户点击某些内容!
只要做到“正确的方式”。