单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。
这是代码
System.Diagnostics.Process pro = new Process();
expstring = "cmd.exe";
pro.StartInfo.FileName = expstring;
pro.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
pro.StartInfo.CreateNoWindow = true;
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput = true;
pro.Start();
pro.StandardInput.WriteLine(@"exp abc/abc@zgworcl buffer=10000 file=c:\aa.dmp owner=abc");
StreamReader reader = pro.StandardOutput;
string line = reader.ReadLine();
while (!reader.EndOfStream)
{
PrintMessage(line);