N
N
nanosem2017-04-23 16:33:12
.NET
nanosem, 2017-04-23 16:33:12

What is the correct way to pass file/directory information between threads?

Hey!
There is this task:

Exercise

Необходимо разработать приложение для ОС Windows, которое позволяет произвести рекурсивный пере-
бор всех вложенных поддиректорий и файлов для указанной директории с занесением результатов в файл
формата XML.
Спецификация
1. По каждой поддиректории и файлу в XML-файле должны быть указаны: имя, дата создания, дата мо-
дификации, дата последнего доступа, атрибуты, размер, владелец, а также допустимые права (запись, чтение, удаление и
т. п.) для текущего пользователя.
2. Помимо размещения результатов в файл они также должны быть занесены в визуальный элемент управ-
ления – дерево, которое необходимо разместить на основном окне приложения.
3. Приложение должно быть организовано в виде четырех потоков, которые выполняются параллельно:
• «основной» (Application.Run());
• «поток сбора информации» (выполняет сканирование указанной директории и создается только на
время сканирования);
• «поток занесения результатов в XML-файл» (получает от «потока сбора информации» сведения об
очередной поддиректории или файле и заносит эти сведения в XML-файл);
• «поток занесения результатов в дерево» (получает от «потока сбора информации» сведения об оче-
редной поддиректории или файле и заносит эти сведения в элемент управления – дерево);
4. Синхронизация между потоками должна осуществляться с помощью базовых механизмов, предостав-
ляемых платформой, таких как Monitor, типов, производных от WaitHandle, и т. д. Не рекомендуется
использовать высокоуровневые механизмы, предоставляемые т. н. TPL, такие как BlockingCollection,
различные Concurrent* коллекции.

In the course of execution, I encountered a problem -
In the "information collection" stream, I recursively go through all the subdirectories (directories selected),
but I just can't figure out how to transfer the data about the directory / file to another stream "entering the treeView"
+ I will have to do more the third thread for entering data into an xml file.
UPD. Thanks everyone, I figured out how to implement

Answer the question

In order to leave comments, you need to log in

2 answer(s)
P
Peter, 2017-04-24
@petermzg

I missed your code, but the task condition is strange:
1. TreeView can only be updated from the application's UI thread. Therefore, there is no point in creating a separate thread.
2. Can't you use SynchronizationContext too? Offer messages WinAPI to send in WPF application? )))

I
ir6is, 2017-08-14
@ir6is

May I have a look at your solution to this problem?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question