暂停和恢复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中有办法做到吗?

暂停和恢复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 ();
}