0

有什么方法可以暂停和恢复 WPF 应用程序中的执行[尤其是在 ViewModel 类中]?我尝试过使用 Auto 和 ManualResetEvent 类。但它并没有在我想暂停的地方暂停。waitone 方法不会暂停执行。

在我的视图模型中,我有一个调用 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 中做到这一点?

4

2 回答 2

1

你在谈论一个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();
}
于 2013-06-09T15:39:43.017 回答
0

但是为什么需要循环执行此操作?只需在调用回调方法时再次运行服务:

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 ();
}
于 2013-06-09T15:50:15.923 回答