【发布时间】:2016-09-08 10:22:03
【问题描述】:
从多线程 WinForm 应用程序执行单个 PowerShell 脚本时会遇到任何问题吗?我主要关心的是锁定 PowerShell 脚本的 WinForm 线程。
for (int i = 0; i <= toProcess; i++)
{
bWorker.ReportProgress(0, i.ToString());
PowerShellProcs workPs = new PowerShellProcs();
workPs.CusId = CustomerDataTable.Rows[i]["CustomerID"].ToString();
ThreadStart threadDelegate = new ThreadStart(workPs.DoPs);
Thread newThread = new Thread(threadDelegate);
newThread.Name = CustomerDataTable.Rows[i]["CustomerID"].ToString();
newThread.Start();
if (toProcess == i)
{
resetEvent.Set();
}
Thread.Sleep(1000);
//threads.Add(newThread);
}
class PowerShellProcs
{
public string CusId;
public void DoPs()
{
String customerId = CusId;
var scriptfile = @"c:\ProcessCustomer.ps1";
Process _Proc = new Process();
_Proc.StartInfo = "Powershell.exe";
_Proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
_Proc.StartInfo.Arguments = "'" + customerId + "' ";
_Proc.Start();
}
}
【问题讨论】:
-
为什么要在另一个线程上启动一个进程?
_Proc.Start()没有阻塞 -
尝试同时运行 X 更新。我是不是太复杂了?
标签: c# .net multithreading powershell powershell-2.0