Я новичок в C#, поэтому, пожалуйста, старайтесь быть основным и объяснять вещи как можно больше.Как создать переменную, которую может использовать другой поток? (C#)
Это мой код прямо сейчас:
using System;
using System.Threading;
class MathQuiz
{
static void Main()
{
Thread ask = new Thread (new ThreadStart (prompt));
ask.Start();
Console.ReadKey();
}
static void prompt()
{
Console.WriteLine ("Testing!");
}
}
То, что я хочу сделать, однако, есть новый поток читать ConsoleKeyInfo к объекту. Затем, если пользователь не нажимает клавишу через 10 секунд, они переходят к следующему вопросу, который повторяет процесс с другим ответом.
Надеюсь, вы все еще со мной.
Мне нужно, чтобы переменная в потоке MAIN была модифицируемой и вызываемой в потоке «подсказка».
Как я могу это сделать?
Да, будет. Но если вы попытаетесь изменить значение, установленное benn в другом потоке, исходный поток все равно получит старое значение, потому что переменная не является «общей». Таким образом, вы должны отметить это как изменчивое. – beastofman
Исходная нить не получит старое значение, это непредсказуемо в отношении того, какое значение оно вернет, поэтому блокировки важны. Ключевое слово volatile просто блокирует работу для вас. – Rob
Насколько я понимаю, функция блокировок, изменчивость отличается. Хотя блокировка предотвращает доступ других потоков к уязвимым частям кода (например, изменение значения var), поле volatile marks, доступное для всех потоков одновременно, так что это похоже на статическое поле, но для потоков. – beastofman