我写了一个简单的TCP Server应用程序, 当程序获得请求时,它将调用exe文件来执行某些操作。 该应用程序在我的电脑上运行良好。
但是当我在另一台PC上运行时,线程会因为它停留在进程启动而卡住,所以我检查了任务管理器是否运行了exe文件。它确实有用。
我不知道如何解决它。
这是我的代码:
System.Diagnostics.Process process = new System.Diagnostics.Process();
string path = System.Environment.CurrentDirectory;
process.StartInfo.WorkingDirectory = path;
process.StartInfo.FileName = "FileTransferTool\\FileTransfer.exe";
process.StartInfo.Arguments = argument;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.CreateNoWindow = false;
process.Start(); // the thread stuck here
我打印出消息,显示
System.ComponentModel.Win32Exception(0x80004005):
系统找不到System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startIn)中指定的文件 FO) 在ClassPackage.DsUploadFiletoNC.Start(Object [] param)的System.Diagnostics.Process.Start()中
答案 0 :(得分:0)
我通过添加另一个进程来调用主程序顶部的cmd.exe解决了这个问题,代码如下所示:
该程序将以管理员身份运行,但我不知道为什么
static void Main(string[] args)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
string path = System.Environment.CurrentDirectory;
process.StartInfo.WorkingDirectory = @"C:\Windows\System32";
process.StartInfo.FileName = "cmd.exe";
//process.StartInfo.FileName = "FileTransferTool\\circle.txt";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardInput = true;
//process.StartInfo.CreateNoWindow = false;
process.Start();
using (TCPServer server = new TCPServer())
{
server.Start();
Console.WriteLine("Socket Server Start...");
Console.ReadKey(true);
}
}