有没有办法在WPF App中暂停和恢复执行[特别是在ViewModel类中]? 我尝试过使用Auto和ManualResetEvent类。但是在我想暂停的时候它并没有暂停。 waitone方法不会暂停执行。
在我的viewmodel中,我有一个调用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中执行此操作?
答案 0 :(得分: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();
}
答案 1 :(得分: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 ();
}