привет, я написал код на c++/cli с помощью chat Gtp 3.5, но получил много ошибок, помоги мне их исправить 
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
	{
		// Задаем строки для поиска
		String^ searchStr1 = "строка1";
		String^ searchStr2 = "строка2";
		String^ searchStr3 = "строка3";
		// Запускаем поиск и удаление строк в параллельных потоках
		Thread^ thread1 = gcnew Thread(gcnew ThreadStart(this, &HUNTMMR2::MyForm::Thread1Method));
		Thread^ thread2 = gcnew Thread(gcnew ThreadStart(this, &HUNTMMR2::MyForm::Thread2Method));
		Thread^ thread3 = gcnew Thread(gcnew ThreadStart(this, &HUNTMMR2::MyForm::Thread3Method));
		// Запускаем потоки
		thread1->Start();
		thread2->Start();
		thread3->Start();
		// Дожидаемся завершения всех потоков
		thread1->Join();
		thread2->Join();
		thread3->Join();
	}
		   void Thread1Method()
		   {
			   String^ searchStr1 = "строка1";
			   SearchAndDeleteString(searchStr1, listBox1);
		   }
		   void Thread2Method()
		   {
			   String^ searchStr2 = "строка2";
			   SearchAndDeleteString(searchStr2, listBox2);
		   }
		   void Thread3Method()
		   {
			   String^ searchStr3 = "строка3";
			   SearchAndDeleteString(searchStr3, nullptr);
		   }
		   void SearchAndDeleteString(String^ searchString, ListBox^ listBox)
		   {
			   // Поиск и удаление строки
			   // Используем openFileDialog1 для выбора файла
			   OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog();
			   openFileDialog1->Filter = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*";
			   // Проверяем, был ли выбран файл
			   if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
			   {
				   String^ filePath = openFileDialog1->FileName;
				   // Открываем выбранный файл для чтения
				   StreamReader^ reader = gcnew StreamReader(filePath);
				   // Открываем временный файл для записи
				   String^ tempFilePath = Path::GetTempFileName();
				   StreamWriter^ writer = gcnew StreamWriter(tempFilePath);
				   String^ line;
				   StringBuilder^ updatedContents = gcnew StringBuilder();
				   while ((line = reader->ReadLine()) != nullptr)
				   {
					   updatedContents->AppendLine(line);
				   }
				   // Закрываем файлы
				   reader->Close();
				   writer->Close();
				   const int maxCommands = 50;
				   const int maxPlayers = 3;
				   StringBuilder^ sb1 = gcnew StringBuilder();
				   StringBuilder^ sb2 = gcnew StringBuilder();
				   for (int i = 0; i <= maxCommands; i++)
				   {
					   for (int j = 0; j <= maxPlayers; j++)
					   {
						   String^ searchStr1 = String::Format("<Attr name=\"MissionBagPlayer_{0}_{1}_blood_line_name\" value=\"", i, j);
						   String^ searchStr2 = String::Format("<Attr name=\"MissionBagPlayer_{0}_{1}_mmr\" value=\"", i, j);
						   String^ searchStr3 = String::Format("<Attr name=\"MissionBagPlayer_{0}_{1}_profileid\" value=\"", i, j);
						   int startIndex = 0;
						   while ((startIndex = updatedContents->IndexOf(searchStr1, startIndex)) != -1)
						   {
							   int valueIndex = updatedContents->IndexOf("value=\"", startIndex);
							   if (valueIndex != -1)
							   {
								   int valueEndIndex = updatedContents->IndexOf("\"", valueIndex + 7);
								   String^ value = updatedContents->Substring(valueIndex + 7, valueEndIndex - valueIndex - 7);
								   if (listBox != nullptr)
								   {
									   listBox->Invoke(gcnew Action<String^>([listBox, value]() { listBox->Items->Add(value); }));
								   }
								   sb1->Append(value)->AppendLine();
								   updatedContents = updatedContents->Remove(valueIndex + 7, valueEndIndex - valueIndex - 7);
								   startIndex = valueEndIndex + 1;
							   }
						   }
						   startIndex = 0;
						   while ((startIndex = updatedContents->IndexOf(searchStr2, startIndex)) != -1)
						   {
							   int valueIndex = updatedContents->IndexOf("value=\"", startIndex);
							   if (valueIndex != -1)
							   {
								   int valueEndIndex = updatedContents->IndexOf("\"", valueIndex + 7);
								   String^ value = updatedContents->Substring(valueIndex + 7, valueEndIndex - valueIndex - 7);
								   if (listBox != nullptr)
								   {
									   listBox->Invoke(gcnew Action<String^>([listBox, value]() { listBox->Items->Add(value); }));
								   }
								   sb2->Append(value)->AppendLine();
								   updatedContents = updatedContents->Remove(valueIndex + 7, valueEndIndex - valueIndex - 7);
								   startIndex = valueEndIndex + 1;
							   }
						   }
						   startIndex = 0;
						   while ((startIndex = updatedContents->IndexOf(searchStr3, startIndex)) != -1)
						   {
							   updatedContents = updatedContents->Remove(startIndex + 7, 1);
							   startIndex = startIndex + 8;
						   }
					   }
				   }
				   // Записываем обновленное содержимое во временный файл
				   StreamWriter^ updatedWriter = gcnew StreamWriter(tempFilePath);
				   updatedWriter->Write(updatedContents);
				   updatedWriter->Close();
				   // Удаляем исходный файл
				   File::Delete(filePath);
				   // Переименовываем временный файл в исходное имя файла
				   File::Move(tempFilePath, filePath);
			   }
		   }