Какой асинхронный вызов используется для подключения к БД и по-прежнему отзывчивый графический интерфейс? - - PullRequest
3 голосов
/ 16 мая 2010

Мое приложение подключается к MySQL, но иногда требуется некоторое время, и графический интерфейс замораживается. Я хотел бы установить соединение в другом потоке, я думаю, что BeginInvoke был бы лучшим способом (я знаю о фоновом работнике, но я хотел бы изучить это). Я изучил страницу MSDN, но не понял, какой способ лучше всего использовать? Они также говорят, что вы можете использовать только обратный вызов, когда потоку, который вызвал async.method, не нужно знать результаты ... Я не понимаю этого, так как считаю, что могу установить некоторую переменную в другом потоке, чтобы "передать" результат Что ж. Мне просто нужно, чтобы графический интерфейс не зависал во время установления соединения. Спасибо за ваш совет.

1 Ответ

2 голосов
/ 18 мая 2010

Самый простой способ справиться с этим - использовать BackgoundWorker. Он специально разработан для решения большинства проблем с потоками, таких как сортировка событий прогресса и уведомлений о завершении из фонового потока в поток GUI. Я использовал его с большим успехом как для WinForms, так и для WPF.

Я знаю много других способов сделать это, но все они предпринимают две или три попытки, чтобы я понял правильно.

...