在c#中保存大字节流的设计指南

时间:2012-11-05 22:03:20

标签: c#

我有一个应用程序,我每隔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();
            }
        }
    }

如何改进此代码?我需要创建一个线程来进行保存。

1 个答案:

答案 0 :(得分:1)

我可以想象一个线程池,线程将接管每个请求并保存数据或执行必须完成的操作,并继续等待新请求。考虑使用TPL或较旧的ThreadPool。