Я новичок в использовании программирования await/async и windows phone 8.1. Мне нужно запустить метод асинхронного моделирования в более чем одном потоке. Может быть четыре, потому что мой телефон имеет четыре ядра. Но я не могу понять его :-(Как запустить метод async несколько раз в отдельных потоках?
Это пример моего метода асинхронного.
public async Task GetFilesAsyncExample(StorageFolder root)
{
IReadOnlyList<StorageFolder> folders = await root.GetFoldersAsync();
//DO SOME WORK WITH FOLDERS//
}
Четыре нити может быть обеспечена путем использования семафоров объекта, но как я могу запустить его в simulatously запущенных потоков ?
EDIT:. Это мой код, который исследует структуру папок и журналы метаданные файлов в базу данных Я хочу, чтобы ускорить выполнение этого кода, вызвав метод «асинхронной LogFilesFromFolderToDB (папка StorageFolder)» simulateously в отдельном потоке для каждой папки.
Stack<StorageFolder> foldersStack = new Stack<StorageFolder>();
foldersStack.Push(root);
while (foldersStack.Count > 0)
{
StorageFolder currentFolder = foldersStack.Pop();
await LogFilesFromFolderToDB(null, currentFolder);// Every call of this method can be done in a separate thread.
IReadOnlyList<StorageFolder> folders = await currentFolder.GetFoldersAsync();
for (int i = 0; i < folders.Count; i++)
foldersStack.Push(folders[i]);
}
Метод: асинхронная LogFilesFromFolderToDB (StorageFolder папки) выглядит следующим образом:
async Task LogFilesFromFolderToDB(StorageFolder folder)
{
IReadOnlyList<StorageFile> files = await folder.GetFilesAsync();
//SOME ANOTHER CODE//
}
Что вы пытаетесь сделать, и почему вы хотите, чтобы запустить его одновременно? –
вы можете использовать Parallel.ForEach (папки, (currentFolder) => {/// Ваш код}) –