我有一个ASP Net Core 3.1 web应用程序,它在启动时启动控制台应用程序。。。
Process p = new Process ();
p.StartInfo.FileName = Path.Combine ( env.ContentRootPath , "MyProcess" , "myprocess.exe" );
p.Start ();
启动的进程侦听TCP连接,如下所示:
while ( true )
{
if ( theTcpListenerServer.Pending() )
{
Task.Run(() =>
{
using ( TcpClient client = theTcpListenerServer.AcceptTcpClient() )
{
try
{
byte[] aByteArray = new byte[ client.SendBufferSize ];
theStream = client.GetStream()
int aRecv;
while ( true )
{
aRecv = theStream.Read(aByteArray , 0 , client.SendBufferSize);
aData = System.Text.Encoding.ASCII.GetString(aByteArray , 0 , aRecv);
if ( !string.IsNullOrEmpty(aData) )
{
RaisePackageReceivedEvent(aData);
break;
}
}
}
catch ( Exception e )
{
//log some info
}
}
});
}
Thread.Sleep(10);
}
如果我单独启动它,这个进程运行的CPU几乎为0%,但是从web应用程序启动它则需要使用30%的CPU。最初,代码没有task.run位,我还添加了thread.sleep(10)。当我调用process.start时,我也尝试重定向输出,但没有任何帮助。
在派生任务之前,您需要调用
不管是哪种方式,这看起来都像是你可以直接在你的web应用程序中生成一个任务。不需要另一个过程。