暂停和恢复WPF中的执行
本文关键字:执行 WPF 恢复 暂停 | 更新日期: 2023-09-27 18:17:41
是否有办法暂停和恢复WPF应用程序的执行[特别是在ViewModel类]?我尝试过Auto和ManualResetEvent类。但它并没有停在我想停的地方。waitone方法没有暂停执行。
在我的视图模型中,我有一个方法调用web服务。web服务的结果将通过另一个方法(即回调方法)传入。从web服务获得结果后,我想继续执行。
public void Method1()
{
for(int i=0; i<5; i++)
{
// Call the web service. No waiting for the result.
// Block the execution here....
}
}
public void CallBackMethod(int serviceResult)
{
// After getting the result...
// I want to continue with Method1...
}
在WPF中有办法做到吗?
你说的是ManualResetEvent
:
private ManualResetEvent _reset;
public void Method1()
{
_reset = new ManualResetEvent(true);
for(int i=0; i<5; i++)
{
// Call the web service.
// WaitOne blocks the current thread
_reset.WaitOne();
}
}
public void CallBackMethod(int serviceResult)
{
// After getting the result...
// Set allows waiting threads to continue
_reset.Set();
}
但是为什么需要在循环中这样做呢?只需在调用回调方法时再次运行该服务:
int count =0;
const int MAX_CALLS = 5;
public void RunService()
{
//do service stuff
}
public void CallBackMethod(int serviceResult)
{
if (count++ < MAX_CALLS)
RunService ();
}
public static void Main (string[] args)
{
RunService ();
}