Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 16
1
.NET 4.x

Обмен данных между потоками

18.05.2017, 16:07. Показов 1226. Ответов 4

Имеется 2 потока (основной и рабочий)
В рабочем потоке появляется строка, которая должна передаваться в основной поток, где выполняются некие действия, используя эту строку, и создается объект типа Image. Этот Image должен передаваться обратно в рабочий поток.

Перечитал много статей и гайдов, но как это сделать так и не сообразил. Может кто помочь?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2017, 16:07
Ответы с готовыми решениями:

Ускорение передачи данных между потоками
Добрый день! Возможно не очень правильно описал проблему в названии, попробую описать доступнее. ...

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

Загрузить или передать изображение между потоками
Извиняюсь, если тема бородата, но всё же не могу понять как передать изображение другому потоку....

Обмен данными между потоками
Здравствуйте. Есть класс, в нем создается поток, который создается TCP сокет и слушает...

4
Эксперт .NET
1792 / 1303 / 424
Регистрация: 10.06.2011
Сообщений: 2,106
18.05.2017, 17:22 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
string str = "lalalal";
 
Application.Current.Dispatcher.Invoke(() =>
{
    //Действия c str
    Image image = new Image();
    
    Task.Run(() =>
    {
        //Действия c image
    });
})
1
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 16
18.05.2017, 17:25  [ТС] 3
Так а каким образом изображение передастся в рабочий поток?
0
Эксперт .NET
1792 / 1303 / 424
Регистрация: 10.06.2011
Сообщений: 2,106
18.05.2017, 18:10 4
Если нужно обязательно в том же потоке, то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string str = "lalalal";
var taskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
 
Application.Current.Dispatcher.Invoke(() =>
{
    //Действия c str
    Image image = new Image();
    
    var cancellationTokenSource = new CancellationTokenSource();
    Task.Factory.StartNew(() =>
    {
        //Действия c image
    }, cancellationTokenSource.Token, TaskCreationOptions.None, taskScheduler)
})
1
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 16
18.05.2017, 21:05  [ТС] 5
Цитата Сообщение от novikov.ea Посмотреть сообщение
var cancellationTokenSource = new CancellationTokenSource();
Выдает ошибку: Текущий SynchronizationContext нельзя использовать как TaskScheduler.

Добавлено через 32 минуты
Цитата Сообщение от Looney Посмотреть сообщение
Выдает ошибку: Текущий SynchronizationContext нельзя использовать как TaskScheduler.
Извиняюсь, не в тот поток кинул)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2017, 21:05

Обмен данными между потоками
Добрый день! Тема давно избитая и статей казалось бы много по данной теме, но не могу доконца...

Разделение данных между потоками (теория)
Помогите понять что такое разделение данных между потоками. Изучаю статью "Работа с потоками C#"...

Обмен данных между классами
Как в данном случае можно использовать значения переменных класса Input в классе Calculating? //...

Обмен данных между приложениями
Добрый день! Такая задача, клиент базы данных Oracle стоить 32 битный, а приложение которое должно...

Автонумирация строк dataGridView и обмен данных между ними
Всем доброе время суток возникла такая проблема с dataGridView, не могу понять как создать...

Взаимодействие между потоками
Мне надо чтоб 1 поток перебирал числа из файла и , которые кратны 17, передавать второму потоку,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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