Size: a a a

2021 May 02

D Юсупов in CODE BLOG / C#
Кто шарить матлаб Симулинк?
источник

P

Phantom in CODE BLOG / C#
источник

V

Vladimir in CODE BLOG / C#
а как правильно добавлять связанные данные в бд через ef если одна из записей существует уже? например у меня есть операции и типы операций, я добавляю новую операцию с уже существующим типом. у меня добавляется и операция и тип

это получается мне везде с собой надо будет таскать id типа операции из базы и делать attach?
источник

О

Олександр in CODE BLOG / C#
Ребят я долго мучился, и всё решилось, когда забрал Thread.Sleep(). Почему когда я вызываю этот метод в synchronizationContext.Post, то UI блокируется, пока не завершиться метод? Вот код, как было:
private async void button1_Click(object sender, EventArgs e)
{
   await Task.Run(new Action(() =>
   {
       UpdateUI();
   }));
}
public void UpdateUI()
{
   synchronizationContext.Post(
            new SendOrPostCallback(o =>
            {
                for (int i = 0; i < 100000; i++)
                {
                    Thread.Sleep(300);
                    progressBar1.Value++;
                }
            }), null);
}
Здесь UI просто блокируется, нельзя ничего передвигать и т.д. Но если заберу Sleep(), всё работает асинхронно..

Почему так?.. Как сделать по другому задержку? Я уже 100 раз считал себя неполноценным.. Уже вот собирался писать Троелсону что у него не полная информация о потоках😡😡😡 Какие методы я только не перепробовал, через Invoke или BeginInvoke на контроле.. кароч всё что на руку попалось...
источник

rr

razumovsky r in CODE BLOG / C#
конечно блокируется
источник

rr

razumovsky r in CODE BLOG / C#
у тебя ж синхронный вызов
источник

rr

razumovsky r in CODE BLOG / C#
выноси свой UpdateUI в таску и все будет ок
источник

О

Олександр in CODE BLOG / C#
как это?(
источник

rr

razumovsky r in CODE BLOG / C#
а это так что мейн поток блокируется до тех пор пока твой метод UpdateUI не отработает
источник

rr

razumovsky r in CODE BLOG / C#
тоесть ЮИ и твой метод висят на одном потоке
источник

rr

razumovsky r in CODE BLOG / C#
что вызывает блокировку ЮИ в момент вызова UpdateUI
источник

rr

razumovsky r in CODE BLOG / C#
можешь эту всю фигню что у тебя есть передать в таску через лямбду
источник

rr

razumovsky r in CODE BLOG / C#
и, держу пари, твоя проблема решится
источник

О

Олександр in CODE BLOG / C#
я понял это, что в одном потоке всё. Как, я имею ввиду, сделать это? Создать новый экземпляр Task?
источник

rr

razumovsky r in CODE BLOG / C#
впрочем, не уверен что он не ругнется на обновление ЮИ с левого потока
источник

rr

razumovsky r in CODE BLOG / C#
да
источник

rr

razumovsky r in CODE BLOG / C#
очень много способов это сделать
источник

О

Олександр in CODE BLOG / C#
        await Task.Run(new Action(() =>
           {
               UpdateUI();
           }));
и вызвать эту таску здесь?
источник

rr

razumovsky r in CODE BLOG / C#
да
источник

rr

razumovsky r in CODE BLOG / C#
можно и так
источник