مثال Async Await

نمونه‌ای از پیاده‌سازی متدهای 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 = "انجام شد.";
            }

دیدگاهتان را بنویسید