نمونهای از پیادهسازی متدهای Async/Await در ذیل نشان داده شده است:
private async Task<string> GetLDAPDetails_Async(string userName)
{
string _Result = string.Empty;
// Creating the PrincipalContext
PrincipalContext principalContext = null;
try
{
// ToDo
}
catch (Exception err)
{
LogFile.WriteMessage("Failed to create PrincipalContext. Exception: " + err);
}
UserPrincipal usr = null;
await Task.Run(() =>
{
usr = UserPrincipal.FindByIdentity(principalContext, userName);
if (usr == null)
{
LogFile.WriteMessage(userName + " Please use a Correct User Logon Name.");
_Result = $"کاربر مورد نظر پیدا نشد ❗";
}
else
{
string temp = string.Empty;
if (usr.Enabled.HasValue)
{
temp = ((usr.Enabled.Value) ? "فعال" : "غیرفعال");
}
else
{
temp = "نامعلوم";
}
_Result = $"کاربر مورد نظر در اکتیودایرکتوری وجود دارد و [{temp}] است.";
}
});
return _Result;
}
سپس متد را به این شکل فراخوانی میکنیم:
Task<string> LDAPdetails = GetLDAPDetails_Async(userName); lblLDAP.Text = await LDAPdetails;
اگر چندین متد داشتیم که باید همه آنها کامل شده و سپس پیامی را نمایش دهیم از این کد استفاده میکنیم:
if (Task.WhenAll(LDAPdetails, Peyvast, jobStatus).IsCompleted)
{
lblStatusMessage.Text = "انجام شد.";
}
لینکی دیگر برای توضیحات اضافه، اینجا وجود دارد