我有一个创建多个线程来发出 HTTP 请求的应用程序。我面临的问题是,如果请求失败,线程将被中止。我需要一些关于如何在新线程或现有线程中重新发出相同请求的想法。我正在使用 BlockingCollection 添加和取消从 HTTP 请求中提取的项目。这并不重要,但有助于理解我在做什么。请记住,HTTP 请求可能失败的原因有很多,因此我不会发布请求的实际代码。我正在使用 HTTPClient 类来发出请求。
示例代码:
private void StartIntegration()
{
var queuCount = 0;
var totalToSend = GetTotalToSendFromDb();
for (int i = 0; i < 10; i++)
{
Task.Factory.StartNew(() =>
{
while (queuCount != totalToSend)
{
//Get 500 items form the database to pass into the request
var items = GetRequestsFromDB(500);
if (items != null && items.Count > 0)
{
queuCount += items.Count;
SendRequest(mailing);
}
}
});
}
for (int i = 0; i < 10; i++)
{
Task.Factory.StartNew(() => ConsumeResults());
}
while (_someGlobalVariable)
{
//Loop until the variable is false.
}
}