首页 > 解决方案 > Thread 中的 join() 方法实际上在做什么?

问题描述

我对 Thread 中的 join() 有疑问。我想在 Thread 中获得一个会话,所以我在我的单个线程中使用它。我第一次使用它时没有加入(),不幸的是我第一次获得会话值。但是在使用 Join() 之后它工作正常。join 在一个线程中做什么。这是我尝试过的代码

public string ImportData(string entity, DataTable excelData, string dataExchangeSelectedColum, string conString, string fnameWithoutGuid, string loginName)
        {

            try
            {
                Guid importID = Guid.NewGuid();
                HttpContext ctx = HttpContext.Current;
                Thread thread = new Thread(() => { HttpContext.Current = ctx; ImportInThread(importID, entity, excelData, dataExchangeSelectedColum, conString, fnameWithoutGuid, loginName); });
                thread.Start();
                thread.Join();
                return importID.ToString();
            }
            catch (Exception)
            {

                throw;
            }


        }

标签: c#multithreadinghttpcontext

解决方案


仅供参考:没有真正的程序应该这样做:

Thread t = new Thread(() => { doStuff(); });
t.Start();
t.Join();

调用Join()后立即调用Start()会破坏创建新线程的目的。与创建新线程不同,该程序可以doStuff()在此时简单地调用。


当你想这样做时创建一个新线程:

Thread t = new Thread(() => { doStuff(); });
t.Start();
doOTHERStuff();
t.Join();

现在,“Stuff”和“OTHERStuff”都同时发生了,这就是线程的全部目的。


推荐阅读