データベースに対して多額の呼び出しを行い、UI を更新するプログラムがあります。ほとんどの場合、UI が応答しないことを意味するため、これが問題を引き起こしています。したがって、データベースにアクセスして UI を更新する関数呼び出しを別のスレッドに配置することにしたので、次のようになりました。
private delegate void CallAsyncDelegate();
private void CallGetDBValues()
{
// Call GetDatabaseValues in new thread
CallAsyncDelegate callGetDatabaseValues = new
CallAsyncDelegate(GetDatabaseValues);
BeginInvoke(callGetDatabaseValues);
}
private void GetDatabaseValues()
{
// Get lots of data here
// Update UI here
}
...
ただし、UI には何の違いもないようです。別のスレッドで実行されるコードが UI を更新する必要がある場合、これが呼び出しを行う方法であるとどこかで読みましたが、これは正しいですか? 私は何か間違ったことをしていますか?