User1454 Ответов: 1

Как сохранить несколько файлов на диск одновременно в C#


Всем привет,
Мне нужно создать простое приложение, которое должно параллельно сохранять файлы на диск. For.eg если есть 10 писем, то каждое письмо должно быть прочитано и сохранено вложениями на диск параллельно. Как я могу сделать это с помощью многопоточности?
1stMail-выполнение задачи
2ndMail-выполнение задания.
|
|
10thMAil-выполнение задания.
Точно так же все это должно делаться параллельно, а не одно за другим.

Что я уже пробовал:

foreach (Item item in findResults)
                      {
                          ThreadPool.QueueUserWorkItem(delegate
                          {
                              StartProcess(item);
                          }, null);
                          Thread.Sleep(1000);
                      }

1 Ответов

Рейтинг:
11

#realJSOP

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

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

Поскольку у меня нет кода, который делает то, что вы хотите, я погуглил следующую фразу - "c# использует TPL для записи нескольких файлов" - и получил более 800 тысяч возможных результатов. Чтобы не заниматься плагиатом чужого решения, я предоставляю вам самому решить, какое из них наиболее подходит для вашего приложения.


User1454

Хорошее объяснение. Спасибо. Я обязательно постараюсь.

User1454

Привет, Джон Симмонс / преступник,
Большое спасибо за решение. Я попробовал TPL, и это довольно быстро. Но я хочу знать, есть ли что-то вроде того, что если есть 1000 файлов, то создается 1000 потоков или он занимает поток, который свободен или не жив ?