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() 方法似乎从未被调用过。我不知道问题可能是什么,所以任何帮助将不胜感激。谢谢:)

C# 简单多线程处理

您需要调用thread.Start()才能启动线程。

另一方面,似乎threadUnloadGrammar()使用了类型 MainWindow 的变量。不确定MainWindow._recognizer.UnloadGrammar到底做了什么,但请确保它不会访问其中的任何 UI 元素,除非它为此使用 Control.Invoke

您需要调用 Thread.Start 来安排线程的执行。