我使用 WCF 服务在本地环境中复制文件。 WPF GUI 用于使用一些按钮从 WCF 服务调用方法。 我使用的通信类型是命名管道。
我在“获取”复制文件并将其传递到 GUI 以填充进度条的任何进度时遇到问题。
当它是单向通信时,是否有机会使用命名管道来处理这个问题?
首先,通过WCF复制文件并不难。
问题是获取百分比,我的方法可以在WCF控制台实时查看。
服务器:
服务1:
public void CopyFile(string source, string target, ref float percent, int bufferSize = 1024 * 1024 * 10)
{
byte[] array = new byte[bufferSize];
using (FileStream fsRead = File.Open(source, FileMode.Open, FileAccess.Read))
{
using (FileStream fsWrite = File.Open(target, FileMode.Create, FileAccess.Write))
{
while (fsRead.Position < fsRead.Length)
{
int length = fsRead.Read(array, 0, array.Length);
fsWrite.Write(array, 0, length);
percent = (float)fsRead.Position / fsRead.Length;
Console.WriteLine(percent.ToString());
}
}
}
}
I服务1:
[OperationContract]
void CopyFile(string source, string target, ref float percent, int bufferSize = 1024 * 1024 * 10);
客户:
Service1Client client=new Service1Client();
float percent = 0;
string source = @"xxxx";
string target = @"xxxx";
percent=client.CopyFile(source, target,ref percent,1024*1024*10);
我的建议是直接将此代码放入您的 WPF 项目中。这将允许您用显示数据替换 Console.Write 行。