2014-01-10 6 views
-2

У меня есть методоперации кросс-нить не действует при запуске Thread

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 Thread = новая тема (новая ThreadStart (splitXmlFile)); t1.Start();

Но когда я начала я имел, я исключение в строке:

string[] line = Regex.Split(inputText.Text, "\n+"); 

Я думаю, что он может прийти в:

progressStt.Maximum = line.Length; 
      progressStt.Step = 1; 
progressStt.performStep(); 
progressStt.Value = 0; 

я не могу исправить это, что я должен делать? ?

+5

Не делайте этого. Вы должны использовать синтаксический анализатор XML. – SLaks

+1

Вероятно, вы должны использовать синтаксический анализатор XML вместо того, чтобы использовать его наполовину. Есть, по крайней мере, дюжина вещей, которые вы пропустите, пытаясь сделать это с помощью только регулярных выражений. – cHao

+2

Существует несколько сотен ** вопросов об этом сообщении об исключении. Нет смысла добавлять другой, поместить текст сообщения в поле поиска или использовать Google. –

ответ

0

inputText.Text проживает в нитке GUI. Вам нужно пройти в этих данных перед тем начинается нить, такие как:

newThread.Start(inputText.Text); 

, а затем получить значение в рамках метода распараллеливания. См. MSDN Thread.Start.

я столкнулся с подобными и написал статью о его озаглавленной C# WPF: Linq Fails in BackgroundWorker DoWork Event

Смежные вопросы