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
类值得研究。它是一种非常相似的生物,无论哪种方式都有一些小的权衡,但它确实允许一种很好的流畅语法将事件链接在一起。