Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, karbofos42, Вы писали:
S>>>Локальная не может быть volatile.
K>>Осталось разобраться как она так шарится между потоками
S>И как? В чем может быть проблема?
Я для кого про sharplab писал?
Я вот даже не поленился и скопировал пример, получился такой код:
internal class Program
{
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0
{
public bool b;
internal void <Main>b__0()
{
Thread.Sleep(5000);
b = false;
}
}
private static void Main(string[] args)
{
<>c__DisplayClass0_0 <>c__DisplayClass0_ = new <>c__DisplayClass0_0();
<>c__DisplayClass0_.b = true;
Thread thread = new Thread(new ThreadStart(<>c__DisplayClass0_.<Main>b__0));
thread.IsBackground = true;
thread.Start();
while (<>c__DisplayClass0_.b)
{
Console.WriteLine("b=" + <>c__DisplayClass0_.b);
Thread.Sleep(1000);
}
Console.WriteLine("b=" + <>c__DisplayClass0_.b);
}
}
Вопросы про "локальную" переменную и как она в лямбду попадает остались?