Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# VkNet Типы сообщений https://www.cyberforum.ru/ csharp-net/ thread2216386.html
как узнать, какой тип сообщения был получен? личное сообщение или из беседы static void Watcher_NewMessages(VkApi owner, ReadOnlyCollection<Message> messages) { for (int i =...
Как начать C#
Здравствуйте. У меня такой вопрос. Начал изучать программирование в начале лета 2017-ого. Поступил в ВУЗ. На начальном этапе понимание синтаксиса и простейших алгоритмов на уровне нахождение...
Emgucv для начинающих, нет видео с веб-камеры C#
Всем привет, решил разобраться с emgucv. нашел простой пример на просторах интернета http://devnuances.com/c_sharp/vyivod...aniem-emgu-cv/ Ошибок нет. добавил все ссылки и скопировал *.dll файлы в...
C# Запуск консольных приложений с кириллицей на англоязычной Windows Всем привет! Установил Windows 10 с английским языком интерфейса. Сразу столкнулся с проблемой: консольные приложения, написанные на русскоязычной ОС, выводят на месте символов кириллицы знаки... https://www.cyberforum.ru/ csharp-net/ thread2215654.html
C# Подавление фоновых звуков за счет двух микрофонов https://www.cyberforum.ru/ csharp-net/ thread2215584.html
У меня стоит задача записи звука на 1 микрофон и очистка окружающих звуков с помощью второго на c#. Можете подсказать с помощью каких библиотек это можно реализовать и есть ли возможность...
C# HttpListener Неверный формат сетевого имени
Здравствуйте. Хочу запустить сервер в локальной сети HttpListener listener = new HttpListener(); listener.Prefixes.Add("http://192.168.137.3:8888/index/"); listener.Start(); Получаю...
Поворот экрана C#
Как программно на C# изменить ориентацию экрана, как это сделано в свойствах экрана Windows. Какую WinAPI функцию вызвать? И желательно пример кода. Спасибо! :)
C# Преобразование xml в html с использованием языка XLST с сущностями DOCTYPE Здравствуйте. Я написал код для преобразования xml в html, используя язык стилей xlst. Все работает отлично, но если в файле со стилями прописать элемент doctype, чтобы использовать сущности, то... https://www.cyberforum.ru/ csharp-net/ thread2215228.html
C# Работа с файлами расширения .hgt или https://www.cyberforum.ru/ csharp-net/ thread2215080.html
Добрый день. Есть файлы .hgt, содержащие матрицу целых чисел (данные SRTM). Нужно выгрузить их, чтобы работать с ними в программе, например в двумерный массив (конечная цель - написать функцию,...
C# Иерархия классов Журнал, книга печатное издание, учебник 1. Построить иерархию классов в соответствии с заданием: Журнал, книга печатное издание, учебник. 2. Расширить иерархию с использованием виртуального класса в качестве основы иерархии. Показать... https://www.cyberforum.ru/ csharp-net/ thread2215059.html
34 / 35 / 12
Регистрация: 04.03.2017
Сообщений: 437
0

Асинхронные операции

25.03.2018, 19:49. Показов 1050. Ответов 3
Метки (Все метки)

Есть у меня источник с элементами (ObservableCollection), и специальные коллекции "отображения", тоже типа ObservableCollection. Коллекции отображения привязываются к листбоксам, но нужны они для реализации функции поиска, т.е. идет проход по источнику и добавление в коллекцию "отображения" элементов удовлетворяющих предикату. Поиск может быть долгим, и я решил сделать его асинхронным, но изменение коллекции возможно лишь из потока DispatcherObject, поэтому сначала я вызываю предикат для каждого элемента из источника и записываю результат в BitArray, а затем уже в потоке DispatcherObject добавляю в коллекцию отображения соответствующие элементы. А теперь основной вопрос - я не понимаю как происходит этот завхват контекса, ну т.е. как после выполнения await, снова происходит выполнение в потоке DispatcherObject? И получается, что если несколько асинхронных вызовов, то что ли в одном и том же потоке (DispatcherObjectа) выполняется несколько операций параллельно?
Вот код, если кому интересно:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private async Task Filter(object o = null)
        {
            BitArray filterMap = null;
            await Task.Factory.StartNew(() =>
            {
                lock (_source)
                    if (SearchString == "")
                    {
                        _isItemsFiltered = false;
                        SyncWithSource();
                        return;
                    }
                _isItemsFiltered = true;
                filterMap = new BitArray(Count);
                for (int i = 0; i < Count; i++)
                    filterMap[i] = _filter(_source[i], _searchString);
            });
            Clear();
            for (int i = 0; i < filterMap.Count; i++)
                if(filterMap[i])
                    InternalAdd(_source[i]);
        }


Добавлено через 8 часов 35 минут
Да, скорее всего параллельно.

Вернуться к обсуждению:
Асинхронные операции
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2018, 19:49
Готовые ответы и решения:

Асинхронные операции
Console.WriteLine(&quot;Some code&quot;); using (var fs = new System.IO.FileStream(&quot;File.txt&quot;,...

Асинхронные операции на C#
Реализую обмен данными с устройством по USB-каналу (bulk передача) с использованием функций WinUSB...

асинхронные делегаты
Добрый день. Вопрос мой об ассинронных делегатах. Я не могу никак понять EndInvoke() дожидается...

Асинхронные сокеты
Здравствуйте. Очень нужна ваша помощь. Вот callback функция которая передается в метод асинхронного...

__________________
3
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.