对所有,
我有一个使用多个 Web 服务的应用程序。这个应用程序的作用是获得许多用户并在 .csv 文件中为各种项目创建条目。
我想为一定数量的用户执行,每 100 或 200 个用户,应用程序等待大约 30 秒并继续执行。
让这完成,直到执行完成。
我想避免向数据库加载查询,并防止由于我进行多次网络调用而导致流量饱和。
我怎样才能做到这一点?
非常感谢您提前。
这是我的代码的一部分:
UserData[] userIds = GetUserID();
if (userIds.Length > 0)
{
List<string> multiUserIDs = new List<string>();
foreach (var userdata in userIds)
{
multiUserIDs.Add(userdata.List[0].ToString());
}
string testName = "test_";
string outCsvFile = string.Format(@"D:\\TasksForAllProjects\\{0}.csv", testName + DateTime.Now.ToString("_yyyyMMdd HHmms"));
String newLine = "";
var stream = File.CreateText(outCsvFile);
stream.WriteLine("ProjectName,UserFirstName,UserLastName,TaskStatus);
string temp = "";
var AllProjectIds = proj.ProjectID; //Esto viene de otra llamada hecha mas arriba
string[] projectIDs = new string[] { AllProjectIds }; // all projects
string singleUserID = "";
string[] taskStatus = new string[] { "notcompleted" };
TaskEntry[] result = GetTasks(projectIDs, singleUserID, multiUserIDs.ToArray(),taskStatus);
newLine = string.Format("\"{0}\",\"{1}\",\"{2}\"",
item.ProjectTitle,
item.UserID,
status);
//Creating a new file when new entries are found.
stream.WriteLine(newLine);
}
stream.Close();
我看到问题可能来自multiUserIDs
拥有所有用户的变量。
因此,它应该由来自该变量的许多用户运行。
你必须让线程休眠:
它接收的参数以毫秒为单位。
但是,有时这样做并不是一个好主意,您应该问自己为什么要让应用程序休眠这么长时间。如果这是要随着时间的推移保持的东西,你应该考虑另一种设计。
如果您正在生成 csv,请不要这样做,请使用诸如
CSVHelper
然后您可以映射整个数据,而无需逐条记录。
我了解您在变量中有一个类,
result
在这种情况下,导出是直接的更重要的是,如果您分析文档,您可以自定义映射并在单个操作中生成文件,这样您就不必使用任何代码停止。
>>如果我大部分时间都在执行调用,我会超时或冻结数据库
我看不出您是如何恢复记录的,但问题不在于 csv 的生成,而在于您如何恢复数据,也许您应该使用
DataReader
但是停止代码对我来说似乎不是一个好的选择。