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 回答