Ваша проблема в том, что Toast
СОЗДАН в другом потоке. Скорее всего, вам нужно будет иметь «цель» в главном потоке пользовательского интерфейса, где вы можете Invoke()
создать И показать Toast
, сохраняя все пользовательские интерфейсы в одном потоке.
EDIT
Если вам нужно сохранить это в другом потоке, вы можете создать еще один поток с циклом сообщений.
Thread t = new Thread();
t.SetApartmentState(ApartmentState.STA) // Required for a UI thread
Что касается реализации задач по отправке и сообщений в эту ветку, я оставлю это на ваше усмотрение. Вам нужно будет позвонить Application.Run()
в начале, чтобы начать цикл обработки сообщений.
И, как всегда, вы должны быть уверены, что Invoke()
будет выполнять любые операции из вашего тоста (или чего-либо в этом потоке), которые могут взаимодействовать с основным потоком пользовательского интерфейса.