#c# #.net-core
#c# #.net-ядро
Вопрос:
В .Net Core есть потоки / задачи и ObservableCollection, но я не могу найти службу диспетчеризации.
Как я могу обновить ObservableCollection из .net core из другого потока?
В Wpf я могу использовать диспетчерскую службу, и winform обладает аналогичными возможностями.
Спасибо
…
Правка 1:
Идея .net core является кроссплатформенной, поэтому нет выделенной платформы или целевого объекта. Он может быть использован в Wpf, Android (xamarin), asp.net, Linux (mono)…
Правка 2: у Xamarin есть устройство решения.BeginInvokeOnMainThread, но я ищу net Core. https://developer.xamarin.com/api/member/Xamarin .Формы.Устройство.BeginInvokeOnMainThread/p/System.Действие/
Комментарии:
1. Можете ли вы добавить подробности о дизайне, которого вы пытаетесь достичь? Какой фреймворк вы используете? Это ASP.net ?
2. Общий механизм, который абстрагируется от всего этого, является
SynchronizationContext.Post
, но, насколько я знаю, Core не предоставляет свою собственную реализацию. (Если это так, то, вероятно, это будет что-то, использующее пул потоков.)3. @Gusdor нет целевой платформы
4. @user1714341 если вы не ориентируетесь на какую-либо платформу приложений, каковы требования для сериализации доступа к коллекции? -1
5. @Gusdor Я не понимаю, о чем вы спрашиваете. вы говорите о сериализации ввода-вывода или отображении данных в пользовательском интерфейсе?
Ответ №1:
Благодаря предложению Джеруна. В итоге я получил следующий код:
await Task.Run(() =>
{
// Do some process
}).ContinueWith(x =>
{
// Update ObservableCollection here
}, TaskScheduler.FromCurrentSynchronizationContext());