跨线程操作无效-集中的Richtextbox中的Timer事件

时间:2019-12-22 20:17:59

标签: c# richtextbox syntax-highlighting cross-thread

好的,所以我想尝试一些事情。只是一个有趣的小项目。您在Richtextbox中键入内容,它会获得特定的颜色,例如语法。我的代码如下:

public Form1()
    {
        InitializeComponent();

        var startTimeSpan = TimeSpan.Zero;
        var periodTimeSpan = TimeSpan.FromSeconds(3);

        var timer = new System.Threading.Timer((e) =>
        {
            SyntaxCheck();
        }, null, startTimeSpan, periodTimeSpan);
    }

    public void SyntaxCheck()
    {
        string ConsoleFieldInput = ConsoleField.Text;
        if (ConsoleFieldInput.Contains("!format") == true)
        {
            ConsoleField.Select(ConsoleField.Text.IndexOf("!format"), "!format".Length);
            ConsoleField.SelectionColor = Color.Aqua;
        }
        if (ConsoleFieldInput.Contains("console") == true)
        {
            ConsoleField.Select(ConsoleField.Text.IndexOf("console"), "console".Length);
            ConsoleField.SelectionColor = Color.Red;
        }
    }

关于如何解决此问题的任何想法?错误:

  

跨线程操作无效:控制'ConsoleField'是从不是在其上创建线程的线程访问的。

0 个答案:

没有答案