c# - c#/core 关闭应用程序但允许子进程继续运行
问题描述
我正在尝试处理由 MTA 触发的事件。
MTA 调用以下代码/exe。它不会继续,直到exe
退出。
我需要 MTA 继续(exe 退出),而其中的代码Process
仍在运行。
我假设当我创建任务时,因为它是一个子进程,所以主上下文完成会终止子上下文。
我还尝试将其与其他方法一起创建为新线程。
请有人解释我将如何实现这一目标?
namespace Test
{
class Program
{
static void Main(string[] args)
{
Task.Run(() => new Foo().Process(args));
}
}
class Foo
{
public async void Process(string[] args)
{
// do something
await Task.delay(200);
// do something
}
}
}
解决方案
我认为您想要的是async
.NET Core 现在支持的 Main 方法。这样您就可以等待处理,并且该过程将保持打开状态,直到处理完成。
这是您的示例更改为这种方法。我将等待时间增加到 5 秒,以便更明显。
namespace ConsoleApp4
{
class Program
{
static async Task Main(string[] args)
{
await new Foo().Process(args);
}
class Foo
{
public async Task Process(string[] args)
{
// do something
await Task.Delay(5000);
// do something
}
}
}
}
推荐阅读
- matlab - 为 MATLAB 使用 (libccd) 共享库
- php - 删除 nginx 中 request_uri 添加的不需要的斜杠
- html - 我可以使用 tab 来聚焦 ap:inplace 组件,以便屏幕阅读器可以读取元素吗?
- facet-wrap - 想用 facet_wrap 按年份分割连续折线图
- kotlin - 如何将我的 ios 应用程序连接到 AndroidStudio 以在模拟或真实设备上运行它?
- ios - Viewcontroller 在第二次调用时不起作用
- c++ - 如何处理圆图的Datachange信号?
- node.js - NodeJS:访问表单数据
- kubernetes - Prometheus pod crashlooping 错误“打开存储失败”
- r - 将每 5 个观察值发送到 r 中的下一行