Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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#简单多线程_C#_Wpf_Multithreading - Fatal编程技术网

C#简单多线程

C#简单多线程,c#,wpf,multithreading,C#,Wpf,Multithreading,我对多线程相当陌生,今天我遇到了这个奇怪的问题。我学习了一些在线教程,在我看来我所做的是正确的 所以我得到了这个代码: GrammarThreading gThread = new GrammarThreading(this, grammar); Thread thread = new Thread(new ThreadStart(gThread.threadUnloadGrammar)); 有了它,我想将语法卸载转移到另一个线程,因为这需要几秒钟的时间。这就是语法阅读课的样子: public

我对多线程相当陌生,今天我遇到了这个奇怪的问题。我学习了一些在线教程,在我看来我所做的是正确的

所以我得到了这个代码:

GrammarThreading gThread = new GrammarThreading(this, grammar);
Thread thread = new Thread(new ThreadStart(gThread.threadUnloadGrammar));
有了它,我想将语法卸载转移到另一个线程,因为这需要几秒钟的时间。这就是语法阅读课的样子:

public class GrammarThreading
{
    public MainWindow window { get; set; }
    public Grammar grammar { get; set; }

    public GrammarThreading(MainWindow _window, Grammar _grammar)
    {
        window = _window;
        grammar = _grammar;
    }

    public void threadUnloadGrammar()
    {
        window._recognizer.UnloadGrammar(grammar);
    }
}

但是,我调试了代码,似乎从未调用过threadUnloadGrammar()方法。我不知道会有什么问题,所以非常感谢您的帮助。谢谢:)

您需要调用
thread.Start()
来启动线程


另一方面,似乎
threadUnloadGrammar()
使用了
MainWindow
类型的变量。不确定
main窗口的功能。\u recognizer.UnloadGrammar
的功能完全相同,但请确保它不会访问其中的任何UI元素,除非它用于此功能。

您需要调用
thread.Start()
来启动线程


另一方面,似乎
threadUnloadGrammar()
使用了
MainWindow
类型的变量。不确定
main窗口是什么。\u recognizer.UnloadGrammar
的功能完全正确,但要确保它不会访问其中的任何UI元素,除非它使用它。

您需要调用来计划线程的执行。

您需要调用来计划线程的执行。

您正在调用
thread.Start()
anywhere?:-)如果您使用的是.NET Framework 4,那么在
System.Threading.Tasks
命名空间中还有一个
TaskFactory
类值得研究。它是一种非常相似的生物,在两种方式中都有一些小的权衡,但确实允许使用一种非常流畅的语法将事件链接在一起。您是否正在调用
thread.Start()
anywhere?:-)如果您使用的是.NET Framework 4,那么
System.Threading.Tasks
命名空间中还有一个
TaskFactory
类值得研究。它是一种非常相似的生物,无论哪种方式都有一些小的权衡,但它确实允许一种很好的流畅语法将事件链接在一起。