我创建了将文件从客户端传输到服务器的项目。我已完成文件传输并获得文件传输的详细信息,如文件名(something.avi)和传输文件的百分比(10%),如下所示,每当我传输文件时,我都使用下面的事件处理程序了解文件传输的详细信息。
private static void SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)
{
// New line for every new file
if ((_lastFileName != null) && (_lastFileName != e.FileName))
{
Console.WriteLine();
}
// Print transfer progress
Console.Write("\r{0} ({1:P0})", e.FileName, e.FileProgress);
// Remember a name of the last file reported
_lastFileName = e.FileName;
}
private static string _lastFileName;
我需要在窗口中绑定此传输的详细信息。我在文件传输时完成了绑定。但是我需要如何使用WPF在窗口中绑定每个第二个文件传输的细节。因为我需要显示文件传输的进度。
答案 0 :(得分:2)
连续触发WinSCP .NET程序集Session.FileTransferProgress
事件。
所以你需要做的就是在事件处理程序中更新你的控件。
当事件在后台线程上触发时,您需要使用Invoke
。
答案 1 :(得分:2)
我在@Martin Prikryl的帮助下找到了解决方案。请在下面找到代码
progressBar.Dispatcher.Invoke(() => progressBar.Value = (int)(e.FileProgress * 100), DispatcherPriority.Background);
这是针对文件传输进度移动的进度条。我将以百分比完成显示进度后发布。
progressBar是wpf中的Xaml元素的名称。
答案 2 :(得分:1)
我找到了显示文件传输进度的代码百分比。请在下面找到wpf窗口的Xaml和c#代码。
使用wpf在窗口中显示百分比的Xaml。
<TextBlock x:Name="percentage" Text="" Height="27" Width="50" FontSize="20"/>
用于以百分比形式绑定文件传输进度的C#代码。
this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate()
{
this.percentage.Text = ((e.FileProgress * 100).ToString() + "%");
}));