C# WPF对库的调用不工作(线程问题)
我有一个第三方库,我用它来产生某种信息 我的代码在控制台应用程序中工作,但当我从WPF.xaml.cs类调用它时,它什么也不做 在debug中,我进入product(Message)功能,之后什么也没有!我没有发现任何异常,我永远也到不了下一行 完全相同的代码在控制台应用程序中运行良好 帮助:(C# WPF对库的调用不工作(线程问题),c#,wpf,multithreading,invoke,C#,Wpf,Multithreading,Invoke,我有一个第三方库,我用它来产生某种信息 我的代码在控制台应用程序中工作,但当我从WPF.xaml.cs类调用它时,它什么也不做 在debug中,我进入product(Message)功能,之后什么也没有!我没有发现任何异常,我永远也到不了下一行 完全相同的代码在控制台应用程序中运行良好 帮助:( 我通过将代码嵌入一个方法并执行以下操作来修复它: Task.Factory.StartNew(() => { ProduceMessage(
我通过将代码嵌入一个方法并执行以下操作来修复它:
Task.Factory.StartNew(() =>
{
ProduceMessage();
});
这里有一节课是我为此写的:
public class WaitCursor : IDisposable
{
private Cursor _previousCursor;
public WaitCursor()
{
_previousCursor = Mouse.OverrideCursor;
Application.Current.Dispatcher.Invoke(() => Mouse.OverrideCursor = Cursors.Wait);
}
#region IDisposable Members
public void Dispose()
{
Application.Current.Dispatcher.Invoke(() => Mouse.OverrideCursor = _previousCursor);
}
#endregion
}
像这样使用它:
using (var cursor = new WaitCursor())
{
// Your long-running code here
}
非常好!您可以考虑从<代码>类<代码>到<代码>结构> <代码>类型为<代码> WaistCurror < /代码>,以避免一个分配的微小开销(微优化,我知道!)请注意,<代码>任务.Studio .StimeNo.<代码>应该简单地是<代码>任务。运行< /代码>,并等待它:<代码>等待任务。运行()=>ProduceMessage());这只是通过将问题推到另一个线程来解决问题。
using (var cursor = new WaitCursor())
{
// Your long-running code here
}