c# - 异步 FTP 上传

标签 c# asynchronous ftp async-await

我怎样才能使这段代码在异步下面,我不知道异步如何与 FTP 上传一起工作。我尝试了很多方法,但如果您上传文件,我不知道将“等待”放在哪里。

public static async void SelectRectangle(Point SourcePoint, Point DestinationPoint, Rectangle SelectionRectangle, string FilePath)
{
    using (Bitmap bitmap = new Bitmap(SelectionRectangle.Width, SelectionRectangle.Height))
    {
        using (Graphics g = Graphics.FromImage(bitmap))
        {

            g.CopyFromScreen(SourcePoint, DestinationPoint, SelectionRectangle.Size);

            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(Properties.Settings.Default.ftphost + Properties.Settings.Default.ftppath + FilePath + "." + Properties.Settings.Default.extension_plain);
            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.Credentials = new NetworkCredential(Properties.Settings.Default.ftpuser, Properties.Settings.Default.ftppassword);
            request.UseBinary = true;

            bitmap.Save(request.GetRequestStream(), ImageFormat.Png);
        }
    }
}

乔里。

最佳答案

您需要创建方法async,然后使用await 进行任何异步操作。您似乎只有其中之一,因此以下应该有效:

public static async Task SelectRectangle(Point SourcePoint, Point DestinationPoint, Rectangle SelectionRectangle, string FilePath)
{
    using (Bitmap bitmap = new Bitmap(SelectionRectangle.Width, SelectionRectangle.Height))
    {
        using (Graphics g = Graphics.FromImage(bitmap))
        {

            g.CopyFromScreen(SourcePoint, DestinationPoint, SelectionRectangle.Size);

            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(Properties.Settings.Default.ftphost + Properties.Settings.Default.ftppath + FilePath + "." + Properties.Settings.Default.extension_plain);
            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.Credentials = new NetworkCredential(Properties.Settings.Default.ftpuser, Properties.Settings.Default.ftppassword);
            request.UseBinary = true;

            Stream rs = await request.GetRequestStreamAsync();
            bitmap.Save(rs, ImageFormat.Png);
        }
    }
}

关于c# - 异步 FTP 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209587/

相关文章:

powershell - 如何在FTP服务器中移动文件

c# - 我可以将 Visual Studio 设置为卸载所有项目,而不是选择 1 个项目并仅递归加载其依赖项吗?

c# - 确定进程何时完成初始化

c# - 将值从 API 插入数据库

C#:异步NamedPipeServerStream的理解

java 。使用 FTPClient 类连接到服务器

java - Spring Integration 使用出站网关递归获取 FTP 文件

c# - .NET XmlDocument : Why DOCTYPE changes after Save?

javascript - 从 Node.js 多次调用 Web 服务

java - java 中使用 void 方法的异步编程