私は現在、数年前に C# で実装されたプロジェクトを割り当てられています。フレームといくつかのExcelファイルの抽出で構成されていますが、問題は、このプロジェクトが非常に壊れている/時代遅れであり、いくつかの機能を変更して新しい機能を追加する必要があることです.
新しい機能で使用する必要がある .NET Framework 3.0 以降でのみサポートされるライブラリがいくつかあり、現在のプロジェクトが構築されたフレームワークは 2.0 以下であるため、フレームワークを変更するとスレッド セーフの問題が発生しました。
たとえば、デザイン ファイル コードとバックエンド コードの 2 つの部分クラスの間で、1 つのラベルの値を変更しようとすると、現在使用されているものを編集できないというエラーが発生します...ラベルの 1 つにデリゲートを使用しました、そしてそれは正常に機能しました..その後、他のテキストボックスで別のエラーが発生しました..エラーが発生した各行をたどる必要なく、すべてをカプセル化し、コード全体にスレッドセーフを適用するオプションはありますか?
コメントから編集
例外:
Exception while Saving Links. Exception: System.InvalidOperationException: Cross-thread operation not valid: Control 'picLinkUBKCross' accessed from a thread other than the thread it was created on.
失敗するコード
this.picLinkUBKCross.Image = ((System.Drawing.Image) resources.GetObject("picLinkUBKCross.Image")));
this.picLinkUBKCross.Location = new System.Drawing.Point(367, 57);
this.picLinkUBKCross.Name = "picLinkUBKCross";
this.picLinkUBKCross.Size = new System.Drawing.Size(56, 35);
this.picLinkUBKCross.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.picLinkUBKCross.TabIndex = 14;
this.picLinkUBKCross.TabStop = false;