簡體   English   中英

ASP.NET Core MVC 從一個動作開始新線程

[英]ASP.NET Core MVC start new thread from an action

我是 ASP.NET Core 的新手,所以也許我做錯了什么,這是我的問題:

我需要什么:加載起始頁后,開始在后台從 Azure 存儲加載應用程序特定數據並在前端顯示它的狀態

我做了什么來實現這一目標:

public ViewResult Index()
{
    var homeModel = new HomeModel();
    Task.Run(() =>
    {
        // Some specific work to do...
        System.Threading.Thread.Sleep(4000);
    });

    return View(homeModel);
}

當我運行此代碼時,前端視圖直到 Task 未完成才會顯示,即使它是不同的托管線程(我也嘗試對new Thread.Start(() => ...); 執行相同的操作)。

我的問題是:這種行為的原因什么? 正如我所說,我是 ASP.NET Core 的新手,我沒有使用過以前版本的 ASP.NET。

我有一些想法如何解決這種行為,但我想知道正確的方法並了解原因:)

PS我正在使用 SignalR 從后端更新視圖。

您處理應用程序啟動作業的方法是錯誤的。 看看IApplicationLifetime接口。 是一個關於它的問題

ThreadStart starter = delegate { SomeVoid(somevar); };
  Thread tr = new Thread(starter);
  tr.IsBackground = true;
  tr.Start();
  tr.Join();

如果需要更多線程使用線程和循環列表,對不起,如果我不幫你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM