C# 线在哪里结束?

C# 线在哪里结束?,c#,multithreading,C#,Multithreading,我目前正在学习c#,想知道它在哪里结束,是在t.Start还是从那里继续,还是应该从threadMethod调用其他方法?提前谢谢 private void startThread() { Thread t = new Thread(new ThreadStart(threadMethod)); t.Start(); } private void threadMethod() { //do stuff } 线程在其方法完成或失败时停止,在threadMethod()中

我目前正在学习c#,想知道它在哪里结束,是在
t.Start
还是从那里继续,还是应该从threadMethod调用其他方法?提前谢谢

private void startThread()
{
    Thread t = new Thread(new ThreadStart(threadMethod));
    t.Start();
}

private void threadMethod()
{
    //do stuff
}

线程在其方法完成或失败时停止,在threadMethod()中是这样。

线程在其方法完成或失败时停止,在threadMethod()中是这样。

线程通常在
threadMethod
停止执行时结束

线程通常在
threadMethod
停止执行时结束

当threadMethod结束时,线程结束。请注意,通过异步执行threadMethod,startThread()将在threadMethod()之前完成

在继续学习c#之前,首先学习多线程概念可能是一个好主意(或者至少同时学习这两个概念),这将使学习变得更容易、更快


祝你好运

当threadMethod结束时,线程结束。请注意,通过异步执行threadMethod,startThread()将在threadMethod()之前完成

在继续学习c#之前,首先学习多线程概念可能是一个好主意(或者至少同时学习这两个概念),这将使学习变得更容易、更快


祝你好运

新线程将运行
threadMethod
,然后被终止。同时和之后,主线程也照常运行。较新的.NET版本不需要ThreadStart。新线程将运行
threadMethod
,然后终止。同时和之后,主线程照常运行。较新的.NET版本中不需要ThreadStart。是否仍需要继续主线程中的代码,如线程从何处开始?或者如果线程中止,或者如果该方法引发异常,或者进程因某种原因终止,或者可能是我没有考虑过的其他例外情况。Servy建议的Thread.Join方法,或者只使用backgroundworker类,它具有当线程停止等时触发的事件,可以真正简化处理线程的过程。@Royboy510您可以使用
thread.Join
让调用线程等待生成的线程完成,然后再继续。但在这种特殊情况下,它会破坏启动新线程的目的。是否仍然可以在主线程中继续代码,例如从线程启动的位置开始?或者如果线程被中止,或者如果该方法引发异常,或者进程因某种原因终止,或者可能是我没有考虑过的其他例外情况。Servy建议的Thread.Join方法,或者只使用backgroundworker类,它具有当线程停止等时触发的事件,可以真正简化处理线程的过程。@Royboy510您可以使用
thread.Join
让调用线程等待生成的线程完成,然后再继续。在这种特殊情况下,启动新线程的目的可能会失败。startThread可能在
threadMethod
之前完成。你不知道是哪种情况,所以你需要能够处理这两种情况。我是说,给定一个例子,他告诉我们在哪里启动新线程,我们知道他在startThreadYep中执行的最后一条指令,我也是。你不知道线程将如何调度。主线程的时间片可能在生成新线程之后(以及在返回之前)结束,新线程将在下一次运行,可能在下一次主线程再次调度之前完成。使用提供的代码不太可能,但仍然有可能。通过某些修改,您可以使任一选项更可能,或者可以使用锁定来确保某些所需的顺序。startThread可能在
threadMethod
之前完成。你不知道是哪种情况,所以你需要能够处理这两种情况。我是说,给定一个例子,他告诉我们在哪里启动新线程,我们知道他在startThreadYep中执行的最后一条指令,我也是。你不知道线程将如何调度。主线程的时间片可能在生成新线程之后(以及在返回之前)结束,新线程将在下一次运行,可能在下一次主线程再次调度之前完成。使用提供的代码不太可能,但仍然有可能。通过某些修改,您可以使任一选项更有可能,或者可以使用锁定来确保某些所需的顺序。