C# 简单多线程处理
本文关键字:多线程处理 简单 | 更新日期: 2023-09-27 18:34:15
我对多线程很陌生,今天我遇到了这个奇怪的问题。我遵循了一些在线教程,在我看来,我正在做的事情是正确的。
所以我得到了这个代码:
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
的变量。不确定MainWindow._recognizer.UnloadGrammar
到底做了什么,但请确保它不会访问其中的任何 UI 元素,除非它为此使用 Control.Invoke
。
您需要调用 Thread.Start 来安排线程的执行。