Not to execute any further code until the async method is completed its execution. Please let me know how to achieve it.
Following is sample code :
// Parent Form code
private void btnOpenForm1_Click(object sender, EventArgs e)
{
    Form1 form1 = new Form1();
    var result = form1.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK)
    {
        // do something
    }
}
// Child form code
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult result = MessageBox.Show(string.Format("Do you want to save changes?", "Confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
    if (result == System.Windows.Forms.DialogResult.Cancel)
    {
        e.Cancel = true;
    }
    else
    {
        if (result == DialogResult.Yes)
        {
            e.Cancel = true;
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
            // HERE I NEED TO WAIT COMPULSARILY TILL THE OPERATION IS COMPLETED, NO NEXT STATEMENT SHOULD BE EXECUTED (NEITHER IN PARENT FORM)
            var isSaveCompleted = await HandleSave().ConfigureAwait(false);  
            if(isSaveCompleted == true)
            {
                // dispose some objects
            }
        }
        else  // if No is clicked
        {
            this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            // dispose some objects
        }
    }
}
public async Task<bool> HandleSave()
{
    await doWork();
    //
    // some code here
    //          
}
public doWork()
{
    //
    // some code for I/O operation
    //
}
In the above code, I don't want to execute the any of the next statements (not even in the Parent Form) until the HandleSave() method is completed its execution.
 
     
     
    