У меня проблема, у меня есть текстовое поле управления, я активировал функцию keyup, поэтому, когда пользователь пишет идентификатор в системе, программа начинает поиск, пока не найдет пользователя.
я использую его с приведенным ниже примером кода
private async void PNationalNo_KeyUp(object sender, KeyEventArgs e)
{
string Ptext = Textbox.text;
string ResposeDataP = "";
await Task.Run(() =>
{
ResposeDataP = RunAsyncGetOnePatient(Ptext, GV.AccountID).Result;
});
Patient1 = JsonConvert.DeserializeObject<PatientM>(ResposeDataP);
if (Patient1 != null)
{
WrongMsg1.Text = "user '" + Patient1 .PatientFullName.ToLower() + "' have this ID number!";
}
else
{
WrongMsg1.Text = "there is no user have this ID!!";
}
}
проблема с этим кодом, иногда, когда код находит результат в последних асинхронных баках, 1 из задач занимает больше времени, чем финальное, поэтому программа выводит результат этой поздней функции !! не последний? !! ((У пользователя нет этого идентификатора !!)), потому что это не последняя функция в асинхронном коде, так как я могу решить эту проблему? !!
Обновлено из комментариев
Я имею в виду, если пользователь ID = "123"
в базе данных, когда я нажимаю 1, это первая функция.
Затем, когда я нажимаю 2, textbox = "12"
Когда я нажимаю 3 textbox = "123"
Таким образом, он должен печатать в WrongMsg1.Text
, что пользователь найден, но проблема иногда заключается в функции textbox = "12"
finish после функции "123"
, поэтому он печатает в "there is no user have this id!!"
.
ты меня понял? потому что async
функция номер 2, завершена после последней функции.