Hello I am working on a WPF platform targeting .NET framework 4.5.2. I am writing a downloader for my application. Here is the code:
private void Download(Dictionary<int, FileAndLinkClass> MyLinks)
    {
        ApplicationDownloadThread = new Thread(() =>
        {
            foreach (KeyValuePair<int, FileAndLinkClass> item in MyLinks)
            {
                fileNo++;
                WebClient myWebClient = new WebClient();
                myWebClient.DownloadProgressChanged += MyWebClient_DownloadProgressChanged;
                myWebClient.DownloadFileCompleted += MyWebClient_DownloadFileCompleted;
                // Download the Web resource and save it into the current filesystem folder.
                string downloadedFileAdress = System.IO.Path.Combine(fileLocation, $"{item.Value.FileName}");
                myWebClient.DownloadFileAsync(new Uri(item.Value.Link), downloadedFileAdress);
                while (myWebClient.IsBusy)
                {
                }
            }
        });
        ApplicationDownloadThread.IsBackground = false;
        ApplicationDownloadThread.Start();
        //UnZipAndCreateUpdatePackage(MyLinks);
    }
Now I want at button click the download must be paused and at another button click the download must be resumed. I tried working with .set() property of an AutoReset event and .Reset() property of the same but it didn't work. 
I need help. My button click code are:
    private AutoResetEvent waitHandle = new AutoResetEvent(true);
    private void StartDownloadBtn_Click(object sender, RoutedEventArgs e)
    {
        waitHandle.Set();
    }
    private void StopDownloadBtn_Click(object sender, RoutedEventArgs e)
    {
        waitHandle.Reset();
    }
I have also tried this link How to pause/suspend a thread then continue it?. nothing happens
I've also gone through Adding pause and continue ability in my downloader but I failed to incorporate the solution in my above code as I am also updating the download progress on the UI.