Параллелизм C # WinForm с вызовом

#c# #multithreading #wcf #thread-safety

#c# #многопоточность #wcf #потокобезопасность

Вопрос:

У меня есть пользовательский интерфейс, который иногда взаимодействует с базой данных MSSQL. Существует поток heartbeat, который вставляет / обновляет данные в ту же базу данных в инструкции Invoke.

1) Является ли моя реализация защитой от несоответствия / повреждения данных БД?

2) Является ли Invoke наиболее эффективным / простым способом создания сериализации БД между потоком пользовательского интерфейса / потоком сердцебиения или можно использовать блокировки?

Комментарии:

1. Это зависит от того, как вы хотите, чтобы ваш пользователь взаимодействовал. Нет ничего плохого в вызове обновления базы данных в отдельном потоке. Хотя является ли пользователь тем, кто инициирует это обновление базы данных? Не могли бы вы дать немного больше информации о рабочем процессе пользователя?

Ответ №1:

Вам следует подумать о BackgroundWorker. Это хорошая абстракция вызова метода Invoke, он обрабатывает большинство случаев.

Комментарии:

1. Блокирует ли RunWorkCompleted из BackgroundWorker поток пользовательского интерфейса, чтобы устранить проблемы с параллелизмом? Если это так, я думаю, что это хорошая альтернатива.