Я действительно не знаю, как заставить 2 цикла работать одновременно.
Это простой вопрос с огромным ответом, но я постараюсь разбить его для вас.
Проблема, которую вы описываете на базовом уровне: «У меня есть два разных куска кода, которые так или иначе взаимодействуют с пользователем. Я хотел бы создать у пользователя впечатление, что оба куска кода выполняются на в то же время плавно реагирует на ввод пользователя. "
Очевидно, что самый простой способ сделать это - написать две программы . То есть заставит операционную систему решить проблему . В операционной системе каким-то образом удается одновременно запускать десятки различных процессов, все из которых гладко (мы надеемся) взаимодействуют с пользователем.
Но наличие двух процессов требует больших затрат. Процессы тяжеловесны, и два куска кода обходятся дорого. Предположим, что вы хотите иметь два куска кода в одной программе . Теперь, что ты делаешь?
Один из способов - поместить два фрагмента кода каждый в отдельный поток в одном и том же процессе. Это кажется хорошей идеей, но создает много собственных проблем. Теперь вам нужно беспокоиться о безопасности потоков, взаимоблокировках и прочем. И, к сожалению, разрешено общаться только одному потоку с пользователем . Каждое приложение формы имеет поток "UI". Если у вас есть два «рабочих» потока, выполняющих ваши фрагменты кода, они должны использовать межпотоковое взаимодействие для связи с потоком пользовательского интерфейса.
Другой способ состоит в том, чтобы разбить каждый кусок кода на крошечные маленькие кусочки, а затем запланировать все куски для выполнения по порядку в потоке пользовательского интерфейса. Планировщик может отдавать приоритет взаимодействию с пользователем, и любая конкретная крошечная часть работы не будет блокировать и не отвечать потоку пользовательского интерфейса.
Это последняя техника, которую я бы предложил вам изучить. Мы делаем много работы в C # 5, чтобы было легче писать программы в этом стиле.
См. http://msdn.microsoft.com/en-us/async для получения дополнительной информации об этой новой функции.