0

大きなバイト配列を約 50 ミリ秒で非常に高速に受信するアプリケーションがあります。

バイト配列には、ファイル名などの情報が含まれています。データ (バイト配列) は、複数のソースから取得される場合があります。

データを受信するたびに、ファイル名を見つけて、そのファイル名にデータを保存する必要があります。

効率的に機能するように設計する方法についてのガイドラインが必要です。

以下は私のコードです...

public class DataSaver
    {
        private static Dictionary<string, FileStream> _dictFileStream;

        public static void SaveData(byte[] byteArray)
        {
            string fileName = GetFileNameFromArray(byteArray);
            FileStream fs = GetFileStream(fileName);
            fs.Write(byteArray, 0, byteArray.Length);
        }

        private static FileStream GetFileStream(string fileName)
        {
            FileStream fs;
            bool hasStream = _dictFileStream.TryGetValue(fileName, out fs);
            if (!hasStream)
            {
                fs = new FileStream(fileName, FileMode.Append);
                _dictFileStream.Add(fileName, fs);
            }
            return fs;
        }

        public static void CloseSaver()
        {
            foreach (var key in _dictFileStream.Keys)
            {
                _dictFileStream[key].Close();
            }
        }
    }

このコードを改善するにはどうすればよいですか? おそらく保存を行うためにスレッドを作成する必要があります。

4

1 に答える 1

1

リクエストごとにスレッドが引き継ぎ、データを保存するか、やらなければならないことを行い、新しいリクエストを待ち続けるスレッドプールを想像できます。TPL または古い ThreadPool の使用を検討してください。

于 2012-11-05T22:24:58.520 に答える