Попробуйте (обратите внимание, что ваш мозг понимает причину, по которой ваш код не работает. Это НЕ предложение для шаблона - спасибо за комментарий, Крис):
class A
{
string q;
public void SomeMethod ()
{
new Thread(Method ()).Start();
//Add this so the thread finishes (not a good permanent solution)
Thread.Sleep(500);
Console.WriteLine (q); //this writes out nothing
}
private void Method ()
{
q = "Hello World";
}
}
Почемуэто сработает?Потому что это дает первому потоку возможность закончить свою работу перед тем, как писать в консоль.Это означает, что один поток пишет, а другой настраивает.
Теперь, лучший способ - заблокировать переменную при изменении / получении q.Простая блокировка подойдет в этом примере.Просто заблокируйте переменную как при установке, так и при извлечении для записи в консоль.