“调用线程必须是STA,因为很多UI组件都需要这个。”WPF我遇到了一个InvalidOperationException消息“调用线程必须是STA,因为许多UI组件都需要这个。”在WPF应用程序中,严重依赖引用的库。我试图确定错误的来源,对各种线程和对象使用调度程序,确保main()具有STAThread属性,尝试在看似相关的方法上设置“[STAThread]”。在MyParticipant构造函数内部,正在构造MyVideoRendererpic,它继承了VideoRenderer,而VideoRenderer构造函数本身没有进入构造函数就抛出了这个异常。代码:publicclassMyParticipant:Participant//insideMainWindow.xaml.cs{publicenumPictureMode{Avatar,Video}publicPictureModepictureMode=PictureMode.Avatar;公共ProgressBar语音音量;公共标签名称标签;公共MyVideoRenderer图片;公共MyVideo视频;publicboolisCachedInClient=false;公共字符串显示名称=空;公共图像avatarImage=null;公共静态intpicHeight=480;公共静态intpiclWidth=640;公共静态intpanelHeight=155;公共静态intpanelWidth=174;publicstaticColorliveColor=SystemColors.GradientActiveCaptionColor;publicstaticColornonLiveColor=SystemColors.GradientInactiveCaptionColor;publicMyParticipant(uintobjectId,VideoManagervideoManager):base(objectId,videoManager){pic=newMyVideoRenderer(videoManagerRef){//Top=5,//Left=5,Height=picHeight,Width=piclWidth,//SizeMode=PictureBoxSizeMode.StretchImage};...公共类VideoRenderer:System.Windows.Controls.Image//引用外部类{publicVideoRenderer(VideoManagerRootvideoManager)///此处异常{this.videoManagerRef=videoManager;}...我的猜测是您正在从后台线程创建UI元素,这是一个例外原因阅读:解决,感谢Rafal的帖子:问题是创建新MyParticipant的线程被设置为MTA默认情况下,因此在MyParticipant中,该MTA线程正在调用新的VideoRenderer,它继承了一个Image。构造UI控件的MTA线程导致此异常。在(WPF应用程序)项目属性中,确保启动对象设置为(未设置)。这解决了我的问题。以上是C#学习教程:《调用线程必须是STA,因为很多UI组件都需要这个》。WPF分享的所有内容,如果对大家有用,需要进一步了解C#学习教程,还望大家多加关注——本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
