Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF对库的调用不工作(线程问题)_C#_Wpf_Multithreading_Invoke - Fatal编程技术网

C# WPF对库的调用不工作(线程问题)

C# WPF对库的调用不工作(线程问题),c#,wpf,multithreading,invoke,C#,Wpf,Multithreading,Invoke,我有一个第三方库,我用它来产生某种信息 我的代码在控制台应用程序中工作,但当我从WPF.xaml.cs类调用它时,它什么也不做 在debug中,我进入product(Message)功能,之后什么也没有!我没有发现任何异常,我永远也到不了下一行 完全相同的代码在控制台应用程序中运行良好 帮助:( 我通过将代码嵌入一个方法并执行以下操作来修复它: Task.Factory.StartNew(() => { ProduceMessage(

我有一个第三方库,我用它来产生某种信息

我的代码在控制台应用程序中工作,但当我从WPF.xaml.cs类调用它时,它什么也不做

在debug中,我进入product(Message)功能,之后什么也没有!我没有发现任何异常,我永远也到不了下一行

完全相同的代码在控制台应用程序中运行良好

帮助:(


我通过将代码嵌入一个方法并执行以下操作来修复它:

        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
}