Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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# 如何使richTextBox1.行安全地跨线程?_C#_Multithreading_Thread Safety_Richtextbox - Fatal编程技术网

C# 如何使richTextBox1.行安全地跨线程?

C# 如何使richTextBox1.行安全地跨线程?,c#,multithreading,thread-safety,richtextbox,C#,Multithreading,Thread Safety,Richtextbox,我需要在另一个线程中获取richTextBox1.Lines。但我不知道如何安全地穿线来获得它 string[] lines = richTextBox1.Lines; 请查看从Control.BeginInvoke继承的RichTextBox.BeginInvoke(委托)的msdn帮助。我同意@Hans的观点,您应该正确地将其从主UI线程传递到您的线程中 …但是,因为每个人都喜欢一句冗长、难懂的句子: List<string> lines = new List&

我需要在另一个线程中获取
richTextBox1.Lines
。但我不知道如何安全地穿线来获得它

string[] lines = richTextBox1.Lines;

请查看从Control.BeginInvoke继承的RichTextBox.BeginInvoke(委托)的msdn帮助。

我同意@Hans的观点,您应该正确地将其从主UI线程传递到您的线程中

…但是,因为每个人都喜欢一句冗长、难懂的句子:

        List<string> lines = new List<string>((string[])richTextBox1.Invoke(new Func<string[]>(delegate { return richTextBox1.Lines; } )) );
        foreach (string line in lines)
        {
            Console.WriteLine(line);
        }
List lines=newlist((string[])richTextBox1.Invoke(newfunc(委托{return richTextBox1.lines;}));
foreach(行中的字符串行)
{
控制台写入线(行);
}

不要这样做。将其作为参数传递给Thread.Start()。工作线程从控件中随机读取属性,用户可以在控件运行时更改这些属性,但这永远不会有好的结果。