本文整理汇总了C#中System.Windows.Threading.DispatcherOperation.Wait方法的典型用法代码示例。如果您正苦于以下问题:C# DispatcherOperation.Wait方法的具体用法?C# DispatcherOperation.Wait怎么用?C# DispatcherOperation.Wait使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Threading.DispatcherOperation
的用法示例。
在下文中一共展示了DispatcherOperation.Wait方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: work
private void work()
{
while (!m_disposed) {
bool getInput = false;
using (m_lockHelper.GetLock()) {
if (m_disposed) {
continue;
}
else if (m_workWaiting) {
getInput = true;
m_workWaiting = false;
}
else {
m_lockHelper.Wait();
continue;
}
}
if (getInput && !m_disposed) {
m_operation = Dispatcher.BeginInvoke(DispatcherPriority.Background, m_preWork);
if (!m_disposed && m_operation.Wait() == DispatcherOperationStatus.Completed) {
bool processInput = (bool)m_operation.Result;
m_operation = null;
if (processInput) {
bool workSucceeded = false;
try {
m_work();
workSucceeded = true;
}
catch (Exception ex) {
if (Util.IsCriticalException(ex)) {
throw;
}
else {
OnClientException(new NotifyWorkerClientExceptionEventArgs(ex));
}
}
if (!m_disposed && workSucceeded) {
// Aside from just calling m_postWork,
// we want to call OnClientException with null to clear
// out a LastException, if one exists...all on the Dispatcher thread
m_operation = Dispatcher.BeginInvoke(DispatcherPriority.Background,
new Action(delegate() {
m_postWork();
OnClientException(null);
}));
if (!m_disposed) {
m_operation.Wait();
}
m_operation = null;
} // if (!m_disposed && workSucceeded)
} // if (processInput && !m_disposed)
} // if Operation completed
} // if (getInput)
} // while (!m_disposed)
}