를 부착 할 때 출력을 변경 I 다음 샘플 프로그램이 있습니다코드 디버거
using System;
using System.Threading;
using System.Threading.Tasks;
namespace StackoverflowExample
{
class Program
{
static int value = 1;
static void Main(string[] args)
{
Task t1 = Task.Run(() =>
{
if (value == 1)
{
Thread.Sleep(1000);
value = 2;
}
});
Task t2 = Task.Run(() =>
{
value = 3;
});
Task.WaitAll(t1, t2);
Console.WriteLine(value);
Console.ReadLine();
}
}
}
I 출력 2
이 코드를 기대합니다. 나는 t1
값이 1
임을 알았고 잠시 잠시 t2
값을 3
으로 설정 한 다음 t1
을 2
으로 다시 변경했습니다.
이것은 Visual Studio에서 F5 키를 누르면 디버거가 연결될 때 발생하는 동작입니다. 그러나 디버거 (Visual Studio에서 Ctrl + F5)를 연결하지 않고이 프로그램을 실행하면 출력은 3
입니다.
왜?
다른 방법은 주위 : (I 제대로 OP를 이해하는 경우) * * 디버거에서 실행하지 않을 때 T2는 T1 전에 시작합니다. –
@MatthewWatson : 네 말이 맞아. 나는 그 질문을 잘못 읽었다. – SLaks