繁体   English   中英

线程内同步运行方法 C# .net 核心

[英]Run Methods inside a thread synchronously C# .net core

我正在像这样在我的 .net 核心 controller 中启动一个后台线程

var t = new System.Threading.Thread(() => LongRunningTask()) 
                                         { IsBackground = true };
t.Start();

然后我的长时间运行方法与此类似

public void LongRunningTask(){
    
    A();
    B();
    C();
 }

但是有时我注意到方法 C 在方法 A 结束之前执行。有没有办法让这些 AB C 方法一个接一个地执行。

或者是否有 ant 更好的方法来运行这个长时间运行的任务,而无需用户等到所有这些完成?

它们在同一个线程上一个接一个地启动,因此A将始终在B开始之前完成,假设A是同步的,并且不包括任何await语句,这将导致它在您认为它完成之前返回。

如果方法是异步的,它们应该返回一个Task并且你应该等待它们,例如:

var t = new System.Threading.Thread(async () => await LongRunningTask())
{ IsBackground = true };
t.Start();

async Task LongRunningTask()
{
    await A();
    await B();
    await C();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM