我有一個查詢本地數據庫并將其發布到 web api 的任務。目前,它需要所有行,將它們分成 500 個塊,然后使用異步線程設置同時發布它們。我有另一份工作,偶爾會從服務器獲取數據,我在想,如果我返回服務器負載并將其存儲在Config.ServerLoad. 這是我用來設置線程的代碼:var json = JsonConvert.SerializeObject(rowDto);var threads = new Thread(new ParameterizedThreadStart(MultiThreadPostThead));var thisThread = new PostParams() { postUrl = postUrl, json = json, callingThread = threads };threads.Start(thisThread);threads.IsBackground = true;ThreadHandles.Add(thisThread);我希望添加這樣的東西:thread.delay(Config.ServerLoad * 1000);例如,如果服務器負載為 0.5,線程之間幾乎沒有延遲,但如果它是 10,它將在帖子之間等待 10 秒。我看到了一些關于 a 的信息Task.Delay(),但沒有看到任何關于線程的信息。我錯過了什么有助于增加動態值延遲或設置最大并發線程數的東西?
2 回答

躍然一笑
TA貢獻1826條經驗 獲得超6個贊
如果您想延遲新線程的啟動,那么您可以執行以下操作
PerformanceCounter cpuCounter;
cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
var thisThread = new PostParams() { postUrl = postUrl, json = json, callingThread = threads };
Thread.Sleep((int)(cpuCounter.NextValue() * 1000));
threads.Start(thisThread);
你可以做的另一件事是使用
threads.Sleep((int)(cpuCounter.NextValue() * 1000));
因為它是一個線程,所以應該有可用的方法
這應該獲取當前的 Cpu 使用情況,然后在啟動新線程之前讓當前線程休眠一段時間 - 如果您已經在配置中存儲了一個數字,那么您可以放棄執行上下文內容并將其替換為您擁有的值: )
- 2 回答
- 0 關注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消