none
How do I fix error await operator can only be used within an async method? RRS feed

  • Question

  • My code behind for GetCasesButton_Click have an error which I am unable to fix. I need help.
    The error is on await CandidateCaseController.GetNextBAtchNumber() line.

    It says The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'. 

    Please help fix this.

    Here is the code behind for GetCasesButton_Click

    protected void GetCasesButton_Click(object sender, EventArgs e)
     {
     #region Required Field Validation
        if (CaseNumbersTextBox.Text.Length < 1)
        {
           string myStringVariable = "Case number textbox cannot be empty.";
           ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + myStringVariable + "');", true);
         }
            if (RequestorDropDownList.SelectedItem.Value !=null)
            {
                ListItem requestorItem = new ListItem();
                requestorItem = (ListItem)RequestorDropDownList.SelectedItem;
            }
                
            if (ReasonDropDownList.SelectedItem.Value !=null)
            {
               ListItem reasonItem = new ListItem();
               reasonItem = (ListItem)ReasonDropDownList.SelectedItem;
            }
            #region Parse case number entries
            string userEnteredCaseNumbers = CaseNumbersTextBox.Text;
            userEnteredCaseNumbers = userEnteredCaseNumbers.Replace("\r", ",");
            userEnteredCaseNumbers = userEnteredCaseNumbers.Replace("\n", ",");
            
            while (userEnteredCaseNumbers.Contains(",,"))
                userEnteredCaseNumbers = userEnteredCaseNumbers.Replace(",,", ",");
                List<string> userEnteredCaseNumberList = new List<string>();
                userEnteredCaseNumberList = userEnteredCaseNumbers.Split(',').Where(x => x.Length > 0).ToList();
                userEnteredCaseNumberList = userEnteredCaseNumberList.Select(s => s.Trim()).ToList();
                #endregion
            try
            {
              #region Get Batch Number
              int newBatchNumber = await CandidateCaseController.GetNextBatchNumber();
              #endregion
              #region Insert entered case numbers in database
              foreach(string caseNumber in userEnteredCaseNumberList)
              {
                 EditCandidateCaseModel newCandidate = new EditCandidateCaseModel();
                 newCandidate.CaseNbr = caseNumber;
                 //newCandidate.RequestorInfoID = requestorItem.Value;
                 //newCandidate.RequestorInfoID = (ListItem)RequestorDropDownList.SelectedItem.Value;
                 //newCandidate.ReasonID = requestorItem.Value;
                 newCandidate.BatchNumber = newBatchNumber;
                 newCandidate.EntryStaffUserName = this._loggedInUserName;
                 await CandidateCaseController.PostCandidate(newCandidate);
              }
    
              #endregion
              }
                catch (Exception ex)
                {
                   string errorMsg = string.Format("An error has occured in {0}. \nException:\n{1}", "GetCasesButton_Click()", ex.Message);
                    MessageBox.Show(errorMsg, "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + errorMsg + "');", true);
                    return;
                }
    }

    Here is the aspx code for the button

    <asp:Button ID="GetCasesButton" runat="server" Text="Get Cases" Font-Size="8.25"
        BackColor="RoyalBlue" ForeColor="White" Height="24px" Width="74px"
        OnClick="GetCasesButton_Click" />

    Thursday, January 9, 2020 8:36 PM

Answers

  • Hello,

    This is the solution

    protected async void GetCasesButton_Click(object sender, EventArgs e)


    Please remember to mark the replies as answers if they help and unmarked them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.

    NuGet BaseConnectionLibrary for database connections.

    StackOverFlow
    profile for Karen Payne on Stack Exchange

    Thursday, January 9, 2020 8:40 PM
    Moderator

All replies

  • Hello,

    This is the solution

    protected async void GetCasesButton_Click(object sender, EventArgs e)


    Please remember to mark the replies as answers if they help and unmarked them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.

    NuGet BaseConnectionLibrary for database connections.

    StackOverFlow
    profile for Karen Payne on Stack Exchange

    Thursday, January 9, 2020 8:40 PM
    Moderator
  • Hello,

    Did adding async resolve your issue?


    Please remember to mark the replies as answers if they help and unmarked them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.

    NuGet BaseConnectionLibrary for database connections.

    StackOverFlow
    profile for Karen Payne on Stack Exchange

    Thursday, January 9, 2020 11:19 PM
    Moderator
  • Hi,

    Thank you for posting here.

    Karen's answer is correct, we can only use await in an async method.

    You can read the Microsoft documentation to learn more about asynchronous programming, it's really useful.

    Asynchronous programming with async and await

    await operator (C# reference)

    Best Regards,

    Timon


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Friday, January 10, 2020 2:16 AM