Ну, я боролся с этим некоторое время, и я не смог найти решение. Я разрабатываю одно из тех приложений-кассиров, которые вы видите в супермаркете, где все работает быстро, как черт. Кассиры знают программу настолько хорошо, что просто набирают скорость света, поэтому пользовательский интерфейс должен быть невероятно отзывчивым.Thread Starts lags UI WPF
В любом случае, поскольку я только кодировал в WPF, я использую его, если кто-то говорит, что WinForms быстрее, я обязательно его изучу. Это мой код, это очень просто, как я тестирование производительности
public partial class MainWindow : Window
{
Thread t;
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
t = new Thread(HandleThread);
t.Start();
}
private void HandleThread()
{
Thread.Sleep(3000);
}
}
Всякий раз, когда кнопка нажата, запускается новый поток, как я планирую на подключение к серверу в новом потоке. Моя проблема заключается в способе button_Click
ОЧЕНЬ МЕДЛЕННО. Возврат занимает около 1 секунды, поэтому кнопка выглядит так, как будто она застряла, и приложение выглядит вялым. Я пробовал темы, BackgroundWorker
, изменил фреймворк на 4.0 и попытался Tasks
. НИЧЕГО. Что бы я ни делал, чтобы начать какую-то фоновую работу, метод берет навсегда.
Мне нужно проверить имя пользователя и пароль на удаленном сервере, как я могу выполнить его без ущерба для пользовательского интерфейса?
Если для обработчика Button_Click действительно требуется примерно 1 сек для обработчика Button_Click, то на каком скудном оборудовании он работает? – elgonzo
Это происходит каждый раз или только при первом нажатии кнопки? Может быть компиляция JIT, хотя и маловероятна. – Asik
Его работа на Windows 7, Intel Core I7 8GB Ram, SSD. Это происходит только в первый раз, если я нажму на него снова, он работает так, как должен. Проблема заключается в том, что человек, щелкнувший по нему, не будет нажимать на него снова, поскольку он должен войти в систему. –