作成日: 2022/01/21 最終更新日: 2023/06/29
文書種別
技術情報
詳細
この現象は、SPREADの描画処理が途中で中断されたために発生していると考えられます。
弊社ではこれまでにマルチスレッドで処理を行ったケースで、マルチスレッドによる割り込み処理が発生した場合に、SPREADの内部設定に不整合が発生し例外(ArgumentOutOfRangeException)が発生することを確認しています。
Windowsフォームでマルチスレッドを作成する場合、フォームやコントロールに対する処理は、そのコントロールを作成したスレッドで実行する必要があります。
マルチスレッドでコントロールを操作する場合、Invokeメソッドを使用してコントロールへの処理を適切なスレッドで実行するようにして下さい。
Windowsフォームでマルチスレッドを作成してコントロールを使用する方法に関する詳細は MSDN をご参照下さい。
また、SPREADのDataSourceにDataSetを格納するときには一定の時間を要しますが、例えばその処理が終わる前に非同期にRefreshメソッドを呼び出すような処理を実装している場合、本来のSPREADの描画処理が中断されたことにより本現象が発生する可能性もあります。こちらについては、DataSetの設定が完了し、さらに初回(Initialize時)のSPREADの描画が完了してからRefreshが実行されるよう、Refreshメソッド呼び出しのタイミングを適切に制御する必要があります。
弊社ではこれまでにマルチスレッドで処理を行ったケースで、マルチスレッドによる割り込み処理が発生した場合に、SPREADの内部設定に不整合が発生し例外(ArgumentOutOfRangeException)が発生することを確認しています。
Windowsフォームでマルチスレッドを作成する場合、フォームやコントロールに対する処理は、そのコントロールを作成したスレッドで実行する必要があります。
マルチスレッドでコントロールを操作する場合、Invokeメソッドを使用してコントロールへの処理を適切なスレッドで実行するようにして下さい。
Windowsフォームでマルチスレッドを作成してコントロールを使用する方法に関する詳細は MSDN をご参照下さい。
また、SPREADのDataSourceにDataSetを格納するときには一定の時間を要しますが、例えばその処理が終わる前に非同期にRefreshメソッドを呼び出すような処理を実装している場合、本来のSPREADの描画処理が中断されたことにより本現象が発生する可能性もあります。こちらについては、DataSetの設定が完了し、さらに初回(Initialize時)のSPREADの描画が完了してからRefreshが実行されるよう、Refreshメソッド呼び出しのタイミングを適切に制御する必要があります。