Я хотел бы выполнить метод в потоке. Метод имеет несколько аргументов и ожидает возвращаемого значения. Может ли кто-нибудь помочь?Передача метода Thread, который имеет несколько аргументов в C#
ответ
Thread thread = new Thread(() =>
{
var result = YourMethod(param1, param2);
// process result here (does not invoked on your main thread)
});
Если вам необходимо вернуть результат в основной поток, а затем рассмотреть вопрос об использовании Task (4 C#) вместо:
var task = new Task<ReturnValueType>(() => YourMethod(param1, param2));
task.Start();
// later you can get value by calling task.Result;
Или с предыдущей версии C#
Func<Param1Type, Param2Type, ReturnValueType> func = YourMethod;
IAsyncResult ar = func.BeginInvoke(param1, param2, null, null);
ar.AsyncWaitHandle.WaitOne();
var result = func.EndInvoke(ar);
@ Servy просто избегал в этом случае –
Спасибо, что это сработало для меня – Channa
Func<string, int, bool> func = SomeMethod;
AsyncCallback callback = ar => { bool retValue = func.EndInvoke(ar); DoSomethingWithTheValue(retValue };
func.BeginInvoke("hello", 42, callback, null);
...
bool SomeMethod(string param1, int param2) { ... }
@Servy, я отредактировал свой ответ –
В этом случае 'DoSomethingWithTheValue' не будет выполняться в основном потоке. То же самое можно добиться простым вызовом 'Thread thread = new Thread (() => DoSomething (YourMethod (param1, param2)))' –
- 1. Определение рекурсивного метода, который принимает несколько аргументов
- 2. Пропустить несколько аргументов в std :: thread
- 3. многопоточность C++ передача аргументов функции
- 4. C++ thread, который запускает несколько потоков
- 5. Передача метода BackgroundWorker.DoEvent C#
- 6. C++/CLR Передача нескольких аргументов в потоках
- 7. C++ Передача аргументов функции
- 8. Передача аргументов в ElapsedEventHandler C#
- 9. Передача списка как несколько аргументов
- 10. C - передача переменных аргументов
- 11. Передача списка аргументов (C++)
- 12. Передача аргументов в приложение C#
- 13. Передача аргументов команды в C
- 14. Передача аргументов в программу C
- 15. Передача аргументов в c-функциях
- 16. Передача интерактивных аргументов для метода PHP exec()
- 17. Имеет ли multiprocessing.pool.imap вариант (например, starmap), который допускает несколько аргументов?
- 18. Проверьте функция имеет несколько аргументов в module.exports
- 19. C пул потоков - передача аргументов дублируют
- 20. Передача данных из потока вызывающего метода в другой boost :: thread
- 21. объявить тип, который не имеет никаких аргументов
- 22. Определение метода буфера протокола. Передача аргументов
- 23. Передача аргументов в Java
- 24. Передача аргументов обработчику сигнала в C
- 25. Передача аргументов в main в c
- 26. Java Thread, который не имеет цикла в методе запуска
- 27. Сколько аргументов имеет main() в C/C++
- 28. Передача нескольких аргументов программе C
- 29. Передача аргументов в функции Python через C++
- 30. Передача выполнения разрешено параметр для метода, который имеет несколько связанного типа, ошибка компиляции
ли вы можете использовать .NET 4.0? – Alex
http://stackoverflow.com/questions/1314155/returning-a-value-from-thread ИЛИ http://stackoverflow.com/questions/8860141/c-sharp-thread-method-return-a-value – Robar