ほぼ毎分実行される 1 つのコンソール アプリがあります。それはいくつかのデータを生成します。
ここまでは順調。
私の質問は、「前回の実行で同じコンソールアプリによって生成された」データに対してロジックを実行したい場合です。この以前のデータを取得するにはどうすればよいですか?
毎分Dbへの往復を避けたいので、コンソールアプリを維持する方法があるかどうかを考えていることに注意してください。何とかメモリ内のデータ。
ほぼ毎分実行される 1 つのコンソール アプリがあります。それはいくつかのデータを生成します。
ここまでは順調。
私の質問は、「前回の実行で同じコンソールアプリによって生成された」データに対してロジックを実行したい場合です。この以前のデータを取得するにはどうすればよいですか?
毎分Dbへの往復を避けたいので、コンソールアプリを維持する方法があるかどうかを考えていることに注意してください。何とかメモリ内のデータ。
プログラムが実行を完了するとデータが失われるため、データをメモリに保持することはできません。
2つのオプションがあります。
可能であれば、マシンに DataTable を XML として保存し、必要に応じてこの XML を DataTable に読み戻します。それはあなたのために働くでしょう
DataTable.WriteXml - 指定されたファイルを使用して、DataTable の現在の内容を XML として書き込みます。
DataTable.ReadXml - 指定されたファイルから XML スキーマとデータを DataTable に読み込みます。
HDにデータを保存できます。BinaryFormatter を使用することをお勧めします。例:
public static Byte[] SerializeObject(Object obj)
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.TypeFormat = FormatterTypeStyle.TypesWhenNeeded;
formatter.AssemblyFormat = FormatterAssemblyStyle.Simple;
using(MemoryStream stream = new MemoryStream())
{
formatter.Serialize(stream, obj);
return stream.ToArray();
}
}
public static Object DeserializeObject(Byte[] bytes)
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.TypeFormat = FormatterTypeStyle.TypesWhenNeeded;
formatter.AssemblyFormat = FormatterAssemblyStyle.Simple;
using(MemoryStream stream = new MemoryStream(bytes))
return formatter.Deserialize(stream);
}
私はそれをテストしませんが、MemoryMappedFile (.NET 4.0)へのロード/保存を試すことができます