当前位置: 首页 > 编程语言 > C#

DragDrop注册失败分享

时间:2023-04-10 11:31:31 C#

DragDrop注册失败System.InvalidOperationException:DragDrop注册失败。—>System.Threading.ThreadStateException:这个异常是什么意思?我试图在运行时在此行向面板添加面板...splitReport.Panel1.Controls.Add(ChartPanel);在VS2008C#中工作此异常意味着拥有的面板(正在添加的面板)已使用MTA线程模型线程进行了初始化。拖放系统要求调用线程使用STA线程模型(特别是它需要通过OleInitialize初始化COM)。线程模型是.NET平台的前身COM平台的不幸遗留物。如果Main函数上有[STAThread]属性,那么主程序线程应该已经是STA了。嗯,最可能的解释是异常发生在另一个线程上。当异常发生时,查看VisualStudio中的Threads窗口(Debug|Windows|Threads),看看您是否在主线程以外的线程上。如果是,解决方案可能就像为新线程设置线程模型一样简单,您可以执行以下操作(将此代码添加到创建控件的线程中):Thread.CurrentThread.SetApartmentState(ApartmentState.STA)(ThreadandApartmentState是System.Threading的成员)这段代码需要在新线程真正启动之前执行。正如@Tomer所提到的,您还可以使用[STAThread]属性以声明方式指定它。如果您发现主线程发生异常,请回帖告诉我们,也许我们可以提供更多帮助。异常发生时的堆栈跟踪可能有助于追踪问题。函数abc{Threadt=newThread(newThreadStart(xyz));t.SetApartmentState(ApartmentState.STA);t.开始();}functionxyz{Windows窗体的代码..或导致错误的任何内容}在Main方法上添加STAThreadAttribute属性。如果程序访问与OLE相关的函数(例如Clipboard类),则需要此属性。[STAThread]staticvoidMain(string[]args){}我不确定你是否已经弄明白了。我刚遇到这个问题,我通过删除我的bin目录来修复它。是的,我知道这个问题是两年半前提出的。我点击了这个例外并做了一些阅读。我更正了它,但没有在任何地方看到我的解决方案,所以我想我会把它贴在其他人可以阅读的地方。在Main()上标记[STAThread]时发生这种情况的一种可能性是,如果您在启动它的线程以外的线程上运行它。尝试在BackgroundWorker.DoWork方法中创建和显示新表单时出现此异常。为了修复它,我将新表单的创建和显示包装到一个方法中,然后对该方法调用Invoke以便它在UI线程上触发。这是因为UI线程从标有[STAThread]的Main()方法开始,如其他答案中所述。到目前为止最简单的方法是:}else{Safe_DoSomethingOnGui();}}privatevoidSafe_DoSomethingOnGui(){//用GUI做任何你想做的事情}你甚至可以传递任何问题:(o);});}else{Safe_DoSomethingOnGui(o);}}privatevoidSafe_DoSomethingOnGui(objecto){//用GUI和o做任何你想做的事}我通过使用下面的代码解决了这个错误......我正在使用后台工作者并尝试在后台工作者访问UI...that'swhygoterror-DragDrop注册不成功。我们无法从后台工作程序或线程中运行的代码访问UI。BeginInvoke((MethodInvoker)delegate{//在这里写你的代码...});谢谢快乐编码...:我最近遇到了这种情况,[STAThreadAttribute]在我的情况下,我通过使用Invoke方法解决了这个问题,它可能对你们有帮助,所以我分享一些代码片段:this.Invoke(newInvokeHandler(delegate(){//这里是你的方法!}));而InvokeHandler就是这样的委托:privatedelegatevoidInvokeHandler();我发现了这个错误,而我发现的那个错误是在使用另一个名为MessageBox.Show(this,...)的线程时,这里没有完成初始化。我们需要删除消息框的所有者以消除错误。以上就是C#学习教程:DragDrop注册失败分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: