сап кхаркачь, в pr 0 программистов. Нужен ответ(на C#): как сделать метод, который завершает работу другого метода. Объясните дебилу пожалуйста :(
>>206590428 (OP)Это так не работает.Второй метод должен проверять, не установлен ли флаг завершения, и, если установлен, самостоятельно прекращать работу.
>>206591015>Можешь сделать Task и из первого метода вызвать отмену операцииНо метод таски все равно должен проверять значение TaskStatus или состояние CancellationToken.
>>206591344Запускается метод который каждые 2 секунды пишет "Hello", после того, как в консоль напишут "/stop", вся хуйня остановится.
>>206591337>Мне и нужна проверка, что если что-то введено с клавы - то все методы прекращают работуНу вот и сделай флаг прекращения работы, который будет устанавливаться потоком, мониторящим ввод, а проверяться всеми остальными потоками.
>>206591432Ну, то, о чем ты пишешь, можно сделать вообще без потоков. Тебе принципиальна многопоточность или как?
Вызов метода должен происходить через инструкцию jmp, тело функции stop такого:stop:asm("ret")Тогда ты вызываешь так:jmp stopНо не забудь вернуть состояние стека!
>>206590428 (OP)Выполняй тот метод, который надо завершить в отдельном потоке.А завершающий метод пусть убивает созданный поток.У тасок вроде тоже должен быть подобный механизм.
>>206592020Нет, для этого ассемблер нужен. В сисярпе же есть доступ к ассемблеру? Язык вроде компилируемый. Посмотри, каким образом функция сохраняет значение стека при вызове, обычно в rbp сохраняет, также надо вернуть значение которое в rbp было до этого.Значит, функция stop должна выглядеть так:asm("movq %rbp, %rsp\t\n");asm("popq %rbp\t\n");asm("ret");Думаю, стоит сделать макрос для чистоты кода#define stop() (asm("jmp stop\t\n"))
>>206592073>Необязательно, можно и безНу я имел в виду, что в таске все равно должно быть какая-то логика для этого, нельзя завершить рандомный метод, в котором это не было предусмотрено.
>>206594644Ебать, что с твоей визуалкой не так?У меня свойства всегда есть, даже если проект на NET Core.Попробуй пересоздать решение или проверь на пустом проекте
>>206594982бля, почему у всех всегда все норм а я один долбоеб? Так же не должно быть, пытался переустанавливать + устанавливал по гайдам, все равно такая хуйня
>>206595104Ты чет не установил, если у тебя только .Net Core доступен, а вообще в нем тоже должно работать
>>206595169я устанавливал еще всякую хуйню для веба, но по другому же должно окно создания проекта выглядеть, не?
>>206595279Не, окно создание проекта выглядит правильно.Другое дело, что CancellationTokenSource для NET Core лежит в System.Threading и доступен аж с версии 1.1 (ниже у меня нет).Если создать проект с нуля, то у него есть окно свойств?
>>206595492Попробуй переустановить Visual Studio (или установить 2017 вместо 2019).Это походу весьма известная бага, лол.
>>206592496>Язык вроде компилируемый. Он в виртуальной машине CLR крутится вроде бы, чтобы всякие потные индуские лапы не лезли куда не надо. Хотя там наверняка jit-компиляция прикручена, как в жабе.
>>206596691Библия C# программистаРихтер Джеффри - CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#
>>206590428 (OP)private bool isUppublic void method(){while (true) { if (isUp) {//do things} else { break;}}}public void stop() { isUp = false;}Ну или как там у вас в решётке. Но суть, надеюсь уловил