我有一个方法
public void splitXmlFile()
{
string[] line = Regex.Split(inputText.Text, "\n+");
progressStt.Maximum = line.Length;
progressStt.Step = 1;
foreach (string q in line)
{
progressStt.performStep();
if (Regex.IsMatch(q, "<[^>]*>"))
{
if (Regex.IsMatch(Regex.Split(q, "<[^>]*>")[0], @"\s"))
{
}
string[] gettag = Regex.Split(q, "(<.*?>)|(.+?(?=<|$))");
foreach (var gettag1 in gettag)
{
if (Regex.IsMatch(gettag1, "<[^>]*>"))
{
}
else
{
if (Regex.IsMatch(gettag1, @"\w"))
listXml.Add(gettag1);
}
}
}
else
{
if (Regex.IsMatch(q, @"\w"))
listXml.Add(q);
}
}
progressStt.Value = 0;
}
创建新主题:
线程t1 =新线程(新的ThreadStart(splitXmlFile)); t1.Start();
但是,当我开始时,我排除了异常:
string[] line = Regex.Split(inputText.Text, "\n+");
我认为它可以进来:
progressStt.Maximum = line.Length;
progressStt.Step = 1;
progressStt.performStep();
progressStt.Value = 0;
我无法修复它,我该怎么办?
答案 0 :(得分:0)
inputText.Text
驻留在GUI线程上。您需要在线程开始之前传递数据,例如:
newThread.Start(inputText.Text);
然后在线程方法中获取值。请参阅MSDN Thread.Start。
我遇到了类似的问题并写了一篇题为C# WPF: Linq Fails in BackgroundWorker DoWork Event
的文章