Прежде всего, несколько while-loops не являются многопоточными. C# - это язык, который работает сверху вниз с помощью кода. Второе:
//create new worker
public System.ComponentModel.BackgroundWorker worker;
// Start new thread
private void StartBackgroundWorker (...) {...}
//what should the worker do
private void worker_DoWork (...) {...}
//if the progress has changed while working
private void worker_ProgressChanged (...) {...}
//thread is finished
private void worker_RunWorkerCompleted (...) {...}
Эти методы необходимы (и, возможно, немного больше) для выполнения этой задачи. Но я думаю, вы должны начать немного ниже, изучая C#.
Ответ на ваш вопрос: Да, возможно –
Знаете ли вы, как это сделать? – George
Если вы хотите сделать что-то еще, пока не получите сообщение, вы не хотите ждать. Вы хотите получать уведомление (по событию). Запустите поток слушателя, который ждет сообщения, а затем опубликуйте его через мессенджер. –