Модель данных сущностей .SaveChanges "зависает" пользовательский интерфейс - PullRequest
1 голос
/ 20 мая 2010

Я использую объект EDM вместе с dataGridView и bindingSource. После добавления многих (1000-х) новых элементов в мой источник / сетку привязки происходит вызов context.SaveChanges от нажатия кнопки приводит к зависанию пользовательского интерфейса на многие секунды. Я читал, что объекты EDM не являются потокобезопасными, поэтому я не думаю, что смогу поставить эту задачу на фоновый рабочий. У кого-нибудь есть какие-либо советы, чтобы я мог сообщить пользователю, что работа идет (например, индикатор выполнения и т. Д.)?

Ответы [ 2 ]

1 голос
/ 20 мая 2010

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

Конечно, вы можете! Не поточно-ориентированный означает, что небезопасно получать доступ к экземплярам из множества потоков одновременно. Совершенно безопасно использовать одного фонового работника для выполнения этой работы.

0 голосов
/ 20 мая 2010

Если вы не хотите передавать пользовательский интерфейс, вам нужно либо выполнить вызов в фоновом потоке, либо использовать асинхронную форму вызова. Если вы сделаете context.SaveChanges непосредственно из обработчика событий кнопки, он повесит UI

...