@joyrax-dev

Почему не работает код?

не могу понять почему не выполняется дальше код в цикле а окно просто виснет(не отвечает), может дело в том что я цикл запустил в асинхором методе? не сильно знаком с асинхроностью, но библиотека на не й построена

использую библиотеки: WTelegramClient
и Collary
Вторая навряд-ли кому-то известна ибо написал ее я, но она основана на sdl2

public async Task Run()
    {
        Application.Client = new WTelegram.Client(20327474, "4secret");
        // WTelegram.Client.LoadPublicKey(Application.PubKey);
        await Application.Client.ConnectAsync();
        
        Console.WriteLine(await Application.Client.Login("phone number"));
        
        string code = Console.ReadLine();
        Console.WriteLine(await Application.Client.Login(code));

        code = Console.ReadLine();
        Console.WriteLine(await Application.Client.Login(code));

        Console.WriteLine(Application.Client.User);
        
        Console.WriteLine();

        Messages_Chats mc = await Application.Client.Messages_GetAllChats();
        Console.WriteLine(mc.chats.Count);
        foreach (KeyValuePair<long, ChatBase> cb in mc.chats)
            Console.WriteLine(cb.Value.Title);
        

        while (!this.Quit)
        {
            this.PrevTick = SDL.SDL_GetTicks64();
            
            // Logic
            this.Events.Dispatch();

            this.Renderer.Clear();

            foreach (Component component in this.Components)
            {
                component.Update();
                component.Draw();
            }

            this.Renderer.Present();
            // End Logic

            this.NowTick = SDL.SDL_GetTicks64();
            Application.DeltaTime = this.NowTick - this.PrevTick;

            System.Threading.Thread.Sleep(1000 / this.Framerate - (int)Application.DeltaTime);
        }
    }
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
не могу понять почему не выполняется дальше код в цикле а окно просто виснет(не отвечает)

Потому что в основном потоке графического приложения в Windows обрабатываются системные сообщения и если в этом потоке начать выполнять тяжелый код, то естественно все будет виснуть. Поэтому в основном потоке работать только с UI, а любые вычисления надо запускать в отдельном потоке. Так что выводите все ваши вычисления, в т.ч. работу с сетью в отдельный поток.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы