我遇到了InvalidOperationException異常,消息是「調用的線程必須是STA,因爲很多UI組件都需要這個。」在一個WPF應用程序中,很大程度上依賴於引用的庫。「調用線程必須是STA,因爲很多UI組件都需要這個。」 WPF
我試圖確定錯誤來自哪裏,使用各種線程和對象的調度程序,確保main()具有STAthread屬性,嘗試在看起來相關的方法上設置「[STAThread]」。
在MyParticipant構造函數中,由於正在構造MyVideoRenderer圖片,它繼承VideoRenderer,VideoRenderer構造函數本身拋出此異常,而不是進入構造函數。
代碼:
public class MyParticipant : Participant //inside MainWindow.xaml.cs
{
public enum PictureMode
{
Avatar,
Video
}
public PictureMode pictureMode = PictureMode.Avatar;
public ProgressBar voiceVolume;
public Label nameLabel;
public MyVideoRenderer pic;
public MyVideo video;
public bool isCachedInClient = false;
public string displayName = null;
public Image avatarImage = null;
public static int picHeight = 480;
public static int piclWidth = 640;
public static int panelHeight = 155;
public static int panelWidth = 174;
public static Color liveColor = SystemColors.GradientActiveCaptionColor;
public static Color nonLiveColor = SystemColors.GradientInactiveCaptionColor;
public MyParticipant(uint objectId, VideoManager videoManager)
: base(objectId, videoManager)
{
pic = new MyVideoRenderer(videoManagerRef)
{
//Top = 5,
//Left = 5,
Height = picHeight,
Width = piclWidth,
//SizeMode = PictureBoxSizeMode.StretchImage
};
...
public class VideoRenderer : System.Windows.Controls.Image //referenced external class
{
public VideoRenderer(VideoManagerRoot videoManager) ///Exception here
{
this.videoManagerRef = videoManager;
}
...
你的問題是? – 2012-07-11 19:56:58
這段代碼可能運行的線程完全不清楚。然而,該例外強烈表明它不在顯示UI的主線程上。 – 2012-07-11 20:49:36