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()。工作线程从控件中随机读取属性,用户可以在控件运行时更改这些属性,但这永远不会有好的结果。