사용자 이름이 유효하지 않은 경우 현재 내 서버를 확인하고 있습니다. 이 코드는 조건이 true가되고 다른 일부 코드가 실행될 때까지 while 루프에서 실행됩니다.증가 비동기 HttpClient GetStringAsync 속도. 같은 시간에 다른 값을 전달하면 확인 차이가 발생하지 않습니다.
내 문제 :
그것은 내가 int amount
매개 변수를 내부에 저장할 것이다 값 중요하지 않습니다. 수표의 속도는 동일하게 유지됩니다.
일부 기기가 DefaultConnectionLimit
또는 그와 비슷한 것일 수 있습니다.
나는 현재하고 싶은 것 : 나는 다음과 같은 값을 증가 할
:
int amount = Int32.Parse(bunifuCustomLabel11.Text);
동시에 더 검사를 실행합니다. 그러나 어떤 특정 시점에서 속도는 더 이상 증가하지 않을 것입니다. 예를 들어 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);
}
}
}
}
HttpClient의 인스턴스를 너무 많이 만들고 삭제하면 그 효과가 발생할 수 있습니다. 하나의 인스턴스를 생성하고 응용 프로그램의 수명 동안 재사용하십시오. 또한 무한 루프가있는 논리로 인해 문제가 발생할 수 있습니다. – Nkosi