В настоящее время я работаю с threading и backgroundworker в C#. Проблема в том, что это. Скажем, у меня есть основной поток для взаимодействия с пользователем и рабочий поток для обработки файлов txt (различные операции редактирования). Затем после того, как backgroundthread запускает свое содержимое один раз, у меня есть запуск таймера, который выполняет другой набор операций. Я хочу, чтобы эти новые операции выполнялись таймером за считанные минуты в одном и том же фоновом потоке без выполнения предыдущих операций, связанных с ним, перед запуском таймера. Как это может быть сделано?Background threading in C#
ответ
Вы должны использовать только System.Timers.Timer
, который будет выполнять обратный вызов в потоке пула потоков.
Не имеет значения, на какой конкретный поток вы запускаете (пока это не поток пользовательского интерфейса).
Если по какой-либо причине это имеет значение (например, если вы используете однопотоковый COM-объект), вам нужно сделать выделенный поток, который ждет, чтобы что-то делать, используя потокобезопасную очередь делегатов ,
Вы хотите использовать метод Event Driven для выполнения вызовов функций вашего рабочего потока из потока пользовательского интерфейса. Способ сделать это с помощью BeginInvoke, вы можете прочитать больше о том, как использовать его здесь: http://www.dreamincode.net/forums/topic/35616-cross-thread-communication-in-c%23/
Добавьте время цикла к концу вашего фона рабочего:
в то время как (! Остановка) {Thread.sleep (yourIntervalinMilliseconds); ...}
Я бы создал стоп-лосс где-то, на что смотрит поток, когда вы хотите, чтобы его выгнали.
- 1. background threading in android
- 2. Multi Threading in C#
- 3. C++ threading in linux
- 4. Threading in C# issue
- 5. Threading in C#
- 6. Threading in C++
- 7. Threading in Objective-C
- 8. Threading in C
- 9. looping in C# threading
- 10. Threading in C#
- 11. Threading + TabControl in C#
- 12. Android threading, background process
- 13. Threading and Background Worker
- 14. ListAdapter и background Threading
- 15. WPF Background threading
- 16. Background Threads in C#
- 17. Threading with listbox in C#
- 18. Threading and Recursion in C#
- 19. Threading in C#: .join обязательный?
- 20. Threading in C with sleep
- 21. Threading Redis connection in C++
- 22. Threading in C#. Прерывимая задача
- 23. threading in C# windows service
- 24. Help threading HttpWebRquest in C#
- 25. Threading in C with CreateThread()
- 26. C# background worker in mvvm
- 27. threading in pygame
- 28. Threading waiting in java
- 29. Threading in application programming
- 30. Threading in WPF
Почему бы не начать новую тему? –
ли фоновый поток заканчивается в любой точке или он работает непрерывно? Если он продолжает выполняться, вы можете использовать локальную логическую переменную в рабочем потоке, чтобы помнить, выполнялась ли операция таймера или нет. –
@Justin C Этот таймер работает в методе timer_Elapsed. Как вы вызываете backgroundworker1_DoWork из потока таймера? – hWorld