У меня есть функция f1 (строка, строка), которая занимает 4 секунды, чтобы выполнить (не имеет значения, что он делает). Протестировали это, вызвав f1 («a», «b») в основном.C# Asynchronous Функция Резьбонарезной
Вызов
Console.WriteLine(f1("a", "b"));
Console.WriteLine(f1("a", "b"));
будет ждать 4 секунды для первой функции, чтобы закончить, подскажите возвращение, ждать еще 4 секунды, подскажите второй результат все прекрасно и денди.
Я пытался делать это параллельно, создавая два отдельных анонимных потоков с лямбда, как так:
new Thread(() => {Console.WriteLine(f1("a", "b")); }).Start();
new Thread(() => {Console.WriteLine(f1("a", "b")); }).Start();
Так как у меня двухъядерный процессор и функции обработки тяжелой (ОС сбалансирован это очень хорошо) У меня есть обе подсказки через 4 секунды (вместо 8), поэтому я знаю, что она работает параллельно.
Вопрос
Как я могу написать функцию f1Async (строка, строка), которая первоначально будет называть f1 (строка, строка), хотя и в другом потоке каждый раз (как я сделал вручную в основной)? Чтобы узнать, что будет выводить файл f1Async, я должен дождаться завершения потока, тем самым вызывая f1Async() два раза подряд, приведет к тому, что функция ожидает завершения одного потока, прежде чем переходить ко второму вызову.
Вау, держитесь там, прежде чем рисковать прочь в земле многопоточности, то лучше сначала знать основы ... Получить книгу, найти учебник или что-то, вы не сможете обойтись без него. –
Можете ли вы уточнить? Я не вижу ничего ужасного в этом вопросе и сам по себе. – Ilhan