Enabling the synchronous async method (FTP / Upload)

I need to upload files via FTP to my server, but this is not 1995, so I thought that I probably want to make it asynchronous or upload files in the background so as not to make the user interface unresponsive.

In the code, this page is a complete example of a synchronous method of uploading files via FTP. How can I turn this into an asynchronous method?

Synchronous Code:

using System; using System.IO; using System.Net; using System.Text; namespace Examples.System.Net { public class WebRequestGetExample { public static void Main () { // Get the object used to communicate with the server. FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm"); request.Method = WebRequestMethods.Ftp.UploadFile; // This example assumes the FTP site uses anonymous logon. request.Credentials = new NetworkCredential ("anonymous"," janeDoe@contoso.com "); // Copy the contents of the file to the request stream. StreamReader sourceStream = new StreamReader("testfile.txt"); byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); sourceStream.Close(); request.ContentLength = fileContents.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(fileContents, 0, fileContents.Length); requestStream.Close(); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription); response.Close(); } } } } 

Should I just drop it at BackgroundWorker?

what should be noted:

I do not need to know the progress of the transfer / download. All I need to know is status (Download or Terminate).

+2
source share
1 answer

Should I just drop it at BackgroundWorker?

No. These types of operations are connected with input-output. You will spend a stream of the stream stream while it waits for the response stream to read / read files to load.

You should study the asynchronous versions of the methods you used above and the magic of async / await will save you from losing thread stream threads and will instead rely on completing I / O to complete the task.

+2
source

Source: https://habr.com/ru/post/1272495/


All Articles