Как запустить функцию в фоновом потоке и передать данные в другой поток / основную программу? - PullRequest
0 голосов
/ 26 октября 2019

Я создаю инструмент на C # для игры, в которую играю, не зная, как лучше это сделать. В игре есть журнал, в который записываются все сообщения в игре:

«Майк присоединился к вечеринке»
«Боб присоединился к вечеринке»
«Боб присоединился к зоне»
«Майк присоединился к области»
«Успех Боба в торговле»
«Боб покинул область»
«Успех Майка в торговле»

Мне нужно иметь возможность выполнять действия, основанные на том, чтожурнал показывает в реальном времени, поэтому я реализовал функцию хвоста.

static async void Readlog()
        {
            using (var fs = new FileStream("F:\\gamelog.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            using (var sr = new StreamReader(fs))

            {
                if (sr.BaseStream.Length > 1024)
                {
                    sr.BaseStream.Seek(1, SeekOrigin.End);
                }

                while (true)
                {
                    string line = sr.ReadLine();

                    if (line != null)
                        Console.WriteLine(line);

Я пытался использовать / изучать асинхронное / ожидание / задачи, но я думаю, что было бы лучше использовать совершенно отдельный поток дляпроверка журнала. Другой поток может обрабатывать торговую функцию и действовать в зависимости от того, какие записи были замечены.

Не уверен, как это сделать, но, думаю, я движусь в правильном направлении.

...