我的代碼執行時出現
跨執行緒作業無效: 存取控制項 'tb_log' 時所使用的執行緒與建立控制項的執行緒不同。
請幫我看下代碼哪裡出問題?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MavenInstall
{
public partial class MavenInstall : Form
{
public MavenInstall()
{
InitializeComponent();
tb_packaging.Text = "jar";
//tb_command.Text = "mvn install:install-file -DgroupId={0} -DartifactId={1} -Dversion={2} -Dpackaging={3} -Dfile={4}";
}
private void btn_select_Click(object sender, EventArgs e)
{
if (SelectJarFile.ShowDialog() == DialogResult.OK)
{
tb_file.Text = SelectJarFile.FileName;
}
}
private void btn_execute_Click(object sender, EventArgs e)
{
tb_log.Text = null;
foreach (Control control in gb_condition.Controls)
{
control.Enabled = false;
}
String cmd = String.Format(@"mvn install:install-file -DgroupId={0} -DartifactId={1} -Dversion={2} -Dpackaging={3} -Dfile={4}"
, tb_groupid.Text,tb_artifactid.Text
,tb_version.Text,tb_packaging.Text,tb_file.Text);
tb_command.Text = cmd;
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
process.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
process.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
process.StartInfo.RedirectStandardError = true;//重定向标准错误输出
process.StartInfo.CreateNoWindow = true;//不显示程序窗口
process.Start();//启动程序
process.OutputDataReceived += new DataReceivedEventHandler(UpdateLog);
process.BeginOutputReadLine();
process.StandardInput.WriteLine(cmd);
process.StandardInput.AutoFlush = true;
process.StandardInput.WriteLine("exit");
process.WaitForExit();//等待程序执行完退出进程
foreach (Control control in gb_condition.Controls)
{
control.Enabled = true;
}
process.Close();
}
private void UpdateLog(object sender, DataReceivedEventArgs e)
{
this.tb_log.Text += e.Data;
}
private void btn_clear_Click(object sender, EventArgs e)
{
tb_groupid.Text = null;
tb_artifactid.Text = null;
tb_version.Text = null;
tb_packaging.Text = null;
tb_file.Text = null;
tb_command.Text = null;
tb_log.Text = null;
}
}
}