<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">以下内容均参考网络上的资料整理完成,在此仅仅是本人的一个整理记录。</span>
在项目中为了提高项目的效率,大量运算部分都使用C/C++编译成exe,然后使用C#制作外壳。
一、C#Process多线程使用
使用C#的Process类进行调用其他exe完成一些既定任务,主界面和调用的exe需要使用两个线程进行维护,这样不至于产生主界面假死现象。
使用的是Thread类,可以简单贴代码如下:
private void Button_Click(object sender, EventArgs e)
{
//启动一个子线程去处理后续任务
Thread thread = new Thread(new ThreadStart(function_Click));
thread.Start();
}
public void function_Click()
{
//调用进程
string argument1 = "\"" + argv1 + "\"";
string argument2 = "\"" + argv2 + "\"";
Process process = new Process();
process.StartInfo.FileName = System.Environment.CurrentDirectory + "//test.exe";
process.StartInfo.Arguments = argument1 + " " + argument2;
process.StartInfo.UseShellExecute = true; ;
//启动
process.Start();
//必须先暂停一下,主线程不能运行
process.WaitForExit();
//结束
process.Close();
}
本次就先这样简单使用,算有一个简单的认识。
2.StartInfo参数空格问题
因为StartInfo.Arguments中参数的间隔是根据空格进行分断的,因此如果Arguments中某一个参数中如果包含空格将会导致出现错误的传参;
为了解决该问题,使用“\"”分别添加在每一个参数的前后即可,上文的代码块中也是如此解决的;
经过测试该方法还是可靠的。