1

ほぼ毎分実行される 1 つのコンソール アプリがあります。それはいくつかのデータを生成します。

ここまでは順調。

私の質問は、「前回の実行で同じコンソールアプリによって生成された」データに対してロジックを実行したい場合です。この以前のデータを取得するにはどうすればよいですか?

毎分Dbへの往復を避けたいので、コンソールアプリを維持する方法があるかどうかを考えていることに注意してください。何とかメモリ内のデータ。

4

3 に答える 3

1

プログラムが実行を完了するとデータが失われるため、データをメモリに保持することはできません。

2つのオプションがあります。

  1. データをローカルファイルに書き込み、次にプログラムを実行するときにそれを読み戻します。
  2. プログラムを変更して、継続的に実行され、ループするようにします。この場合、プログラムが終了していないため、データをメモリに保持できます
于 2012-11-09T11:15:54.623 に答える
1

可能であれば、マシンに DataTable を XML として保存し、必要に応じてこの XML を DataTable に読み戻します。それはあなたのために働くでしょう

DataTable.WriteXml - 指定されたファイルを使用して、DataTable の現在の内容を XML として書き込みます。

DataTable.ReadXml - 指定されたファイルから XML スキーマとデータを DataTable に読み込みます。

于 2012-11-09T11:10:49.050 に答える
0

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)へのロード/保存を試すことができます

于 2012-11-09T12:47:07.740 に答える