Thread-SafeForm.Show我在写一个Toast,需要线程安全,因为它是用来报告异步socket输入的状态的。我试图让它线程安全,但吐司仍然锁定。publicstaticvoidShow(stringmessage){Toasttoast=newToast(message);toast.ShowAction();}私有委托voidInvokeCallback();publicvoidShowAction(){if(InvokeRequired){调用(newInvokeCallback(ShowAction));}else{显示();我希望能够像消息框一样轻松地显示它们,即Toast.Show("Statuschanged");任何帮助将不胜感激。您的问题是Toast是在另一个线程上创建的。您可能需要做的是在主UI线程上有一个“目标”,您可以在其中调用()创建和显示Toast,将所有UI保持在同一个线程上。编辑如果您需要能够将它保留在另一个线程上,那么您唯一的选择是创建另一个带有消息循环的线程。线程t=新线程();t.SetApartmentState(ApartmentState.STA)//一个UI线程需要的至于调度任务和消息到这个线程的实现,就交给你了。您需要在它的开头调用Application.Run()以启动消息循环。而且,与往常一样,您必须确保从Toast(或此线程上可能与主UI线程交互的任何操作)调用()任何操作。以上就是C#学习教程:线程安全的Form.Show分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
