文件传输详细信息持续绑定,直到使用WPF在窗口中传输文件

我创建了将文件从客户端传输到服务器的项目。 我已完成文件传输并获得文件传输的详细信息,如文件名(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在窗口中绑定每个第二个文件传输的细节。 因为我需要显示文件传输的进度。

连续触发WinSCP .NET程序集Session.FileTransferProgress事件。

所以你需要做的就是在事件处理程序中更新你的控件。

在后台线程上触发事件时,您需要使用Invoke

请参阅使用其他线程更新GUI(WPF) 。

我在@Martin Prikryl的帮助下找到了解决方案。请找到下面的代码

 progressBar.Dispatcher.Invoke(() => progressBar.Value = (int)(e.FileProgress * 100), DispatcherPriority.Background); 

这是用于文件传输进度的进度条移动。我将以百分比forms完成显示进度。

progressBar是wpf中Xaml元素的名称。

我找到了显示文件传输进度的代码百分比。 请在下面找到wpf窗口的Xaml和c#代码。

使用wpf在窗口中显示百分比的Xaml。

  

用于以百分比forms绑定文件传输进度的C#代码。

 this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() { this.percentage.Text = ((e.FileProgress * 100).ToString() + "%"); }));