c# - LINQpad 线程行为

标签 c# multithreading linq linqpad

我刚开始使用 LinqPad 并尝试其中的一些线程片段,我很困惑为什么我的代码没有按预期执行。

Thread t1 = new Thread
(delegate()
    {
        for (int cycles = 0; cycles < 1000; cycles++)
        {
            Thread.Sleep(500);
            Console.WriteLine("Hello World!");
        }
    }
);
t1.Start();

Console.WriteLine("Soham");

为什么这只打印 Soham。线程内的代码块根本没有执行。我无法理解为什么因为语法编译得很好而且据我所知关于 c# 这应该编译得很好并在 VS2010 中运行并执行两个输出,即使无法确定其顺序。我在这里做什么或想错了什么。我可能需要一些有用的教程和建议来习惯 LinqPad。

最佳答案

尝试在 Console.WriteLine("Soham") 之后添加 t1.Join() :-) LINQPad 可能会看到主线程终止并杀死所有内容。使用 t1.Join(); 主线程将等待其他线程完成。

啊...刚刚测试了一下:-)

我要补充一点,你可以用更少的字符来写:

new Thread(() => 
{

关于c# - LINQpad 线程行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726201/

相关文章:

c++ - 将数据从调用者线程传递到另一个 boost::thread 中的方法

multithreading - 如何在 Jmeter 中的线程组之间添加延迟?

c# - LINQ 转换问题

c# - 隐式类型变量错误

c# - 如何使用 C# 在网页的源代码中查找 div 中的文本

c# - 统一容器 - 拦截实例创建

c# - TreeView 选中/取消选中所有子项

java - 同步块(synchronized block)的绝对等价物?

c# - 为什么数据库数据没有被更新但对象却没有错误?

c# - Action<string> 未被垃圾收集。为什么?