WebForms と WinForms の根本的な違いは、WinForms がステートフルであることです。言い換えれば、一度ロードしたオブジェクトは、プログラムがシャットダウンされるまで利用可能であることを保証できます。HTTP はステートレスであり、ASP.Net は Web アプリケーションのページを結合するために多くの「魔法」[ViewState、サーバー セッション、Cookie、非表示フィールドなど] を織り込んでいるため、同じことは WebForms には当てはまりません。
この方法の基本的な概念を使用すると、オブジェクトを WinForms でグローバルに使用できるようにするのは簡単です。Singleton / Static クラスを使用し、そのメンバーを割り当てます。いつでも .Instance.. [静的クラス/静的プロパティを持つクラスの場合] と言って、任意のフォームから値を取得できます。
1つの問題は「スレッドセーフ」です...別名..複数のフォームが同時に静的プロパティを読み書きします。これに気をつければ、休むのは簡単です。
上記の問題の場合:
レコードをキャッシュする独自の Singleton Cache クラスを持つことができます。Cache クラスは、カスタム コレクションの実装になります。スレッドセーフであることを確認する必要があります[または、アプリケーションが一度だけ読み込まれ、それ以降は読み取られるようにする]...データベースへの変更をエンティティオブジェクトに反映させたい場合は、本格的なORMを検討する必要があるかもしれません.
CacheList.OrderCache[orderNo].Customer.Address.City = "Las Vegas";
class static CacheList
{
public static Cache OrderCache {get; internal set;}
}
public class Cache : CollectionBase where T : Entity
{
.....
}