如果用户名变为可用,我正在检查我自己的服务器。此代码将在while循环中运行,直到条件变为true并且将执行其他一些代码。
我的问题:
我将在int amount
参数中存储哪个值无关紧要。检查的速度将保持不变。
这可能是由某些DefaultConnectionLimit
或类似的东西造成的吗?
我目前想做什么:
我想增加以下值:
int amount = Int32.Parse(bunifuCustomLabel11.Text);
同时运行更多检查。但在某些特定点上,速度不会再增加。因此,假设我将值100传递,然后代码将以与我输入200时相同的速度执行。
功能:检查句柄/用户名的当前状态并返回true或false:
private async Task CheckUntilOneOfTheUsersIsAvaliable()
{
int amount = Int32.Parse(bunifuCustomLabel11.Text);
await Task.WhenAny(Enumerable.Range(0, amount).Select(i => CheckUntilUserIsAvaliable()));
// If aviable run some other code..
}
private async Task CheckUntilUserIsAvaliable()
{
while (!await IsUserAvaliable(bunifuMetroTextbox3.Text) && changedUser == false)
{
// method_5 increaes a label
method_5();
await Task.Delay(1000);
}
}
private async Task<bool> IsUserAvaliable(string handle)
{
while (true)
{
using (HttpClient client = new HttpClient())
{
try
{
string content = await client.GetStringAsync("http://urlcom/script.php?user=" + handle);
return content.Contains("No users found");
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
答案 0 :(得分:0)
有一些限制
可以并行运行的任务数。当然不是100,甚至不是200.
服务或托管服务器允许来自同一客户端的连接数。
您可以编写一些调试日志,以查看有多少HttpClient
个实例正在与服务器进行通信。