簡體   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