我有一个应用程序,我每隔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();
}
}
}
如何改进此代码?我需要创建一个线程来进行保存。
答案 0 :(得分:1)
我可以想象一个线程池,线程将接管每个请求并保存数据或执行必须完成的操作,并继续等待新请求。考虑使用TPL或较旧的ThreadPool。