C#Process多线程使用&&StartInfo空格处理方法

<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中某一个参数中如果包含空格将会导致出现错误的传参;

为了解决该问题,使用“\"”分别添加在每一个参数的前后即可,上文的代码块中也是如此解决的;

经过测试该方法还是可靠的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值