我是一名WPF新手,对C#线程编程几乎没有经验。我被分配了一个带有多线程的C#WPF应用程序。该应用程序的要求是将本地大文件上传到 名为" ABC"的目标文件夹直接位于运行于其下的远程服务器上的根磁盘驱动程序(例如C:\ ABC)下 Windows平台。我不知道要去的方向。请指教。谢谢。
以下是有关要求的详细信息:
因为每个上传的文件都很大,所以需要一个单独的线程来运行上传文件功能。 我计划使用async / await和Task对象进行线程编程。有什么想法吗?
在WPF中我不知道哪个WPF控件用于上传功能。请帮忙。
对于目标文件夹" ABC",我是否需要明确设置其访问权限?
我应该使用async / await和Task,或BackgroundWorker类吗?
更新
WPF应用程序不是WCF应用程序。抱歉我的错字。
答案 0 :(得分:1)
要使用WCF
服务通过HTTP
传输大型文件,您可以使用以下类型的绑定:
wsHttpBinding
basicHttpBinding
在wsHttpBinding
中,我们可以将TransferMode
属性设置为Buffered
,但是对于大文件使用此方法存在缺点,因为它需要将整个文件放在内存中在上载/下载之前,Web客户端和WCF服务主机上都需要一个大缓冲区。但是,这种方法对于安全地传输小文件非常有用。
在basicHTTPBinding
中,我们可以将TransferMode
属性用作Streamed
,以便可以以块的形式传输文件。
有关更多信息,请访问以下文章: WCF Streaming: Upload/Download Files Over HTTP
以及通过TCP/IP
传输文件,请阅读以下内容: