0

私は現在、数年前に 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; 
4

2 に答える 2

1

プロジェクトのマルチスレッド コードにエラーが含まれている場合、新しいフレームワークとスレッド処理を使用すると、奇妙なグリッチから実際の例外に進みます (これは良いことです)。これらのエラーに次々と取り組む以外にできることはありません。すべてのバグのあるコードを 1 つの特効薬で修正する魔法はありません。

于 2013-09-12T07:26:07.470 に答える