• Почему метод Cancel() объекта cancelTokenSource действует и на объект Task, которому в параметры конструктора токен не передаётся (см. внутри)?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    вообще то твой код не работает в дотнет8, при прямом копировании. ошибок не дает, но и ни чего не печатает.. поиграюсь.. а так то... смотри внимательно:
    CancellationToken token = cancelTokenSource.Token;
    ///...
        Task task2 = new Task(() =>
        {
            for (int i = 1; i < 10; i++)
            {
                if (token.IsCancellationRequested)
                {
                    Console.WriteLine("Операция прервана");
                    return;
                }
                Console.WriteLine($"2. Квадрат числа {i} равен {i * i}");
                Thread.Sleep(200);
            }
        });
    .. они у тебя в одной области видимости, и ты бодро проверяешь статус завершения.. зачем? ;)))
    ... решения?.. ну простейшее - CancellationTokenSource2 ... не быть же второй таске вечной..

    ps
    в 4,8 работает так
    using System.Threading.Tasks;
    using System.Threading;
    using System;
    
    class cancelTokenTest
    {
        static void Main(string[] args)
        {
            var cancelTokenSource = new CancellationTokenSource();
            var token = cancelTokenSource.Token;
    
            var cancelTokenSource2 = new CancellationTokenSource();
            var token2 = cancelTokenSource2.Token;
    
            var task = new Task(() =>
            {
                for (int i = 1; i < 100000; i++)
                {
                    if (token.IsCancellationRequested)
                    {
                        Console.WriteLine("Операция 1 прервана");
                        return;
                    }
                    Console.WriteLine($"1. Квадрат числа {i} равен {i * i}");
                    Thread.Sleep(200);
                }
            }, token);
    
            var task2 = new Task(() =>
            {
                for (int i = 10; i < 1000000; i++)
                {
                    if (token2.IsCancellationRequested)
                    {
                        Console.WriteLine("Операция 2 прервана");
                        return;
                    }
                    Console.WriteLine($"2. Квадрат числа {i} равен {i * i}");
                    Thread.Sleep(200);
                }
            }, token2);
    
            task.Start();
            task2.Start();
    
            Thread.Sleep(1000);
            cancelTokenSource.Cancel();
            Thread.Sleep(50); // без этого не успевает обновиться статус у меня..
            Console.WriteLine($"Task Status 1: {task.Status}");
            Thread.Sleep(1000);
            cancelTokenSource2.Cancel();
            Thread.Sleep(200); // можете закаментить для сравнения, и поиграть со значениями..
            Console.WriteLine($"Task Status 2: {task2.Status}");
            cancelTokenSource.Dispose();
            cancelTokenSource2.Dispose();
        }
    }
    в дотнет 8 ... не сразу... но
    может устаревшие методы? но компилируются.. топят в пользу асинхронки?
    ... вот пример для 8
    https://learn.microsoft.com/ru-ru/dotnet/api/syste...
    обратите внимание на использование CancellationToken, он действительно обрывает исполнение до начала. можно конечно попытаться адаптировать под ваш случай.. но это если опять будет сильно не чего делать.. не отписывайтесь )))
    using System.Runtime.CompilerServices;
    
    public static class cancelTokenTest8and2task
    {
        public static void print(this string s) => Console.WriteLine(s);
        public static void Main()
        {
            var ts1 = new CancellationTokenSource();
            var tk1 = ts1.Token;
    
            var ts2 = new CancellationTokenSource();
            var tk2 = ts2.Token;
    
    
            var t1 = new Task(() => {
                for (int i = 1; i < 100000; i++)
                {
                    if (tk1.IsCancellationRequested)
                    {
                        "Операция t1 прервана".print();
                        return;
                    }
                    $"t1. Квадрат числа {i} равен {i * i}".print();
                    Thread.Sleep(200);
                }
            });
    
            var t2 = new Task(() => {
                for (int i = 1; i < 100000; i++)
                {
                    if (tk2.IsCancellationRequested)
                    {
                        "Операция t2 прервана".print();
                        return;
                    }
                    $"t2. Корень числа {i} равен {Math.Sqrt(i)}".print();
                    Thread.Sleep(200);
                }
            });
    
            t1.Start();
            t2.Start();
            Thread.Sleep(1000);
            ts1.Cancel();
            Thread.Sleep(50);
            $"\nTask1 status: {t1.Status}".print();
    
            Thread.Sleep(1000);
            ts2.Cancel();
            Thread.Sleep(200);
            $"\nTask2 status: {t2.Status}".print();
            ts1.Dispose();
            ts2.Dispose();
        }
    }
    работает в дот нет 8 ... кроме using System.Runtime.CompilerServices; я разницы пока не вижу (имена не в счет!)...
    Ответ написан
    Комментировать
  • Как ускоренно добавить ссылки в поисковой выдаче Google?

    vpetrov
    @vpetrov
    частный SEO-специалист, textarget.ru
    Во-первых, 200 URL в сутки - это на одну учётку. Добавьте ещё учётки, если нужно заливать на объёмах.
    Во-вторых, нет никакого особого смысла заливать в индекс вообще всё. Если Гугл не увидит особой ценности этих страниц (а их, вероятно, и нету) – всё равно деиндексирует через какое-то время.
    Прокачивайте узловые страницы – контентом, ссылками. Будет естественный трафик – будет и индексирование, и положительная динамика. Поисковые системы сейчас не будут тратить ресурсы на обход и индексацию всего подряд без каких-то особых причин.
    Ответ написан
    Комментировать
  • Не могу вставить элементы (фигуры в шахматах) Может кто знает?

    IvanU7n
    @IvanU7n
    нет окончания тега img
    stule должно быть style
    Ответ написан
    1 комментарий
  • Как сделать ии на ML.NET?

    Конкретной болезни (скажем, COVID-19) или их множество?
    Для маш. обучения с учителем нужно собрать базу с набором идентификаторов симптомов и ответом (болен: Д/Н или вероятность). Имея набор из X идентификаторов симптомов на входе и одним, а на выходе - вероятность болезни (или Y выходов с вероятностями).
    Начни отсюда
    Ответ написан
    2 комментария
  • Что я сделал не так?

    Vindicar
    @Vindicar
    RTFM!
    В-нулевых, пиши симптомы ошибки.
    Во-первых, simpleDividers(n)[len(simpleDividers(n))+1]
    Тебе что, палец отрезают за каждую использованную локальную переменную?
    Зачем два раза вычислять simpleDividers(n)? Почему не закинуть результат в переменную?
    Во-вторых, ты пытаешься обратиться к элементу списка с номером, превышающим его длину (потому что +1).
    Т.е. если у числа три делителя, ты бы обратился к номеру 4. Как по-твоему, это получится сделать?
    В-третьих, ты не возвращаешь answer через return при возврате из simpleDividers(), а код ниже написна так, словно ты его возвращаешь.
    Ответ написан
    Комментировать
  • Как зарегестрировать домен для XMLHttpRequest?

    IvanU7n
    @IvanU7n
    всё равно для чего домен регистрируется одинаково, если он уже есть, то больше ничего не нужно делать
    Ответ написан
    2 комментария
  • Как в программе winscp включить подтверждение изменений?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Нет такой настройки. И не будет. scp - это secure copy. И не более того.
    Ответ написан
    Комментировать
  • Как лучше начать изучение c#?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Как и с любым другим языком, для начала прочитать учебник.
    Ответ написан
    1 комментарий
  • Как добавить карту в сервис?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Элементарно: в БД создаётся таблица мест, в которой есть поля для координат, и таблица бронирований, а потом пишутся энпдоинты для CRUD-операций с этими таблицами.
    Ответ написан
    2 комментария
  • Как сбросить пароль в PostgreSql в терминале linux?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    В pg_hba.conf устанавливаете trust для локальных подключений пользователя postgres, делаете релоад настроек, через psql -U postgres меняете все нужные пароли, возвращаете нормальную авторизацию в pg_hba.
    Ответ написан
    1 комментарий
  • Как сделать волнистый блок в верстке?

    Kinolog76
    @Kinolog76
    Как вариант, если у тебя есть картинка -то можно вставить её через background или задать родительскому блоку position:reletive а блоку с картинкой position: absolute
    Ответ написан
    Комментировать
  • Какие бывают режимы работы сборщика мусора в .Net?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    https://learn.microsoft.com/ru-ru/dotnet/framework...
    https://habr.com/ru/articles/590475/

    .. совет - пока не поймете, в тч на экспериментах, используйте режимы по умолчанию ))

    ps пример - мой старый десктоп 4 ядра, новый ноут 20 ядер.. при попытке что то оптимизировать, даже успешной, потеряю универсальность.. а выбор рантайма будет весьма близок к лучшему возможному. как то так..
    Ответ написан
    2 комментария
  • Можно ли заставить .net приложение отправлять HTTP запрос со взаимным tls?

    @d-stream
    Готовые решения - не подаю, но...
    var cert = new X509Certificate2(путь_до_файла_серта, "пароль_серта");
        var handler = new HttpClientHandler();
        handler.ClientCertificates.Add(cert);


    подробности
    Ответ написан
    Комментировать
  • Как написать на ассемблере программу без ос?

    vabka
    @vabka
    Токсичный шарпист
    Писать программы, которые не зависят от ОС или писать без ОС?
    Если первое, то можно (ОС и EFI же как-то пишутся и работают)
    Если второе, то сейчас не получится. Раньше код писали на перфокартах, которые сразу же были и носителем данных. Сегодня носителями данных являются hdd и ssd, на которые ты сам данные записать никак не сможешь.
    Ответ написан
    Комментировать
  • Как написать на ассемблере программу без ос?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Assembler
    Седой и строгий
    Можно. Выбираете железяку, под которую будете писать вашу программу, читаете документацию к ней, пишите, компилируете, копируете бинарник на носитель.
    Ответ написан
    Комментировать
  • Unity: ошибка "NullReferenceException" при взаимодействии с объектом. В чём может быть причина?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Не вижу инициализации _arm
    Ответ написан
    9 комментариев
  • Как делается Авторизация и аутентификация на Blazor Server?

    @OwDafuq
    1. Сохранить, очевидно, например в LocalStorage/Cookie. Получить информацию: взять середину токена (там 3 части, разделенных запятой, а вам нужна как раз 2-ая из них), сделать на этой строке base64 decode и json deserialize, например, и будет вся информация в виде Claim'ов

    2. Данные о пользователе в смысле логин/пароль и пр.? Очевидно, что в базе, а как - на ваше усмотрение, мы используем стандартные возможности EF, просто немного дописанные руками (в т.ч. фио и пр.)

    3. Да, мы так тоже делаем, смотреть в сторону IMeddleware
    Ответ написан
    6 комментариев
  • Как решить проблемы первого пользователя учитывая архитектуру проекта?

    petermzg
    @petermzg
    Самый лучший программист
    Так создайте сейчас первого пользователя с нужным паролем и в .HasData(...) пропишите полученный хеш.
    И при первом использовании просто предложите данному пользователю сменить пароль. Такой ведь механизм у вас есть
    Ответ написан
    3 комментария
  • Почему не работает слайдер Slick в Bootstrap?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Бутстрап тут при чем?
    1) Не вижу подключения сликслайдера.
    2) криво прописаны пути до яваскриптов и стилей, соответственно нифига не работает
    3) Подключен овл карусель, который тоже видимо не работает
    4) В коде нет вышеописанного блока

    что за папка такая - isset? Может assets?

    90% вопросов без отмеченных решением, при том что ответы там вполне есть...
    Ответ написан
    3 комментария
  • Как сделать перемещение блока от движения мыши?

    IvanU7n
    @IvanU7n
    а подсмотреть там? идея простая: слушаем mousemove, если курсор в нужно части от ширины экрана, то добавляем/отнимает translate по x, который естественно где-то храним, как вариант можно не translate, а scrollLeft, если overflow: hidden
    Ответ написан
    1 комментарий