私はwpfアプリケーションを持っています。アプリケーションの実行中に、あるメソッドに到達すると、いくつかの操作を実行するイベントを発生させます。この場合、データベースで動作するDLLのインスタンスにアクセスする必要があり、別のスレッドがそのオブジェクトを所有していることを通知する例外がスローされます。これを処理するための最良の方法は何でしょうか?
//this is in the main thread - in MainWindow.cs - code behind
MyDataBaseManager DB_manager = new MyDataBaseManager(connectionString);
//event handler
void MainWindow_MyCustomEvent(object sender, MainWindow.MyCustomEventArgs e)
{
try
{
if (str1 == str2)
{
//getting exception when trying to perform this statement
DB_manager.UpdateTable(this.textBlock_MyTextBlock.Text, DateTime.Now, currenrUser);
theNextstring = DB_manager.GetTheNextString();
if (theNextstring != string.Empty)
{
this.textBlock_theNextstring.Text = theNextstringף
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OKCancel, MessageBoxImage.Error);
}
}
ifステートメントで2つの文字列を比較すると、例外はスローされませんが、DB_managerを使用する場合、またはUIコンポーネントを使用する場合は、-
The calling thread cannot access this object because a different thread owns it.
イベントに接続文字列を渡して、オブジェクトに新しいインスタンスを作成する必要がありますか?または、別のより良い解決策がありますか?
ありがとう...