文件传输详细信息持续绑定,直到使用 WPF 在 window 中传输文件
File transfer details binding continuously until file transfered in window using 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;
我需要在window中绑定这个转移的细节。我在传输文件时完成了绑定。但我需要如何使用 WPF 在 window 中绑定每秒传输的文件详细信息。因为我需要显示文件传输进度。
WinSCP .NET 程序集 Session.FileTransferProgress
事件连续触发。
所以您需要做的就是更新事件处理程序中的控件。
由于事件是在后台线程上触发的,因此您需要使用Invoke
. See Updating GUI (WPF) using a different thread。
有关 WinForms 代码示例,请参阅 WinSCP 文章 Displaying FTP/SFTP transfer progress on WinForms ProgressBar。使用 WPF,代码将非常相似。
我在@Martin Prikryl 的帮助下找到了解决方案。请在下面找到代码
progressBar.Dispatcher.Invoke(() => progressBar.Value = (int)(e.FileProgress * 100), DispatcherPriority.Background);
这是为了让进度条随着文件传输进度移动。我会post完成后以百分比显示进度。
progressBar 是 wpf 中 Xaml 元素的名称。
我找到了用百分比显示文件传输进度的代码。请在下面找到 Xaml 和 wpf window.
的 c# 代码
Xaml 使用 wpf 在 window 中显示百分比。
<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() + "%");
}));
我已经创建了将文件从客户端传输到服务器的项目。我已经完成了文件传输并获得了文件传输的详细信息,例如文件名 (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;
我需要在window中绑定这个转移的细节。我在传输文件时完成了绑定。但我需要如何使用 WPF 在 window 中绑定每秒传输的文件详细信息。因为我需要显示文件传输进度。
WinSCP .NET 程序集 Session.FileTransferProgress
事件连续触发。
所以您需要做的就是更新事件处理程序中的控件。
由于事件是在后台线程上触发的,因此您需要使用Invoke
. See Updating GUI (WPF) using a different thread。
有关 WinForms 代码示例,请参阅 WinSCP 文章 Displaying FTP/SFTP transfer progress on WinForms ProgressBar。使用 WPF,代码将非常相似。
我在@Martin Prikryl 的帮助下找到了解决方案。请在下面找到代码
progressBar.Dispatcher.Invoke(() => progressBar.Value = (int)(e.FileProgress * 100), DispatcherPriority.Background);
这是为了让进度条随着文件传输进度移动。我会post完成后以百分比显示进度。
progressBar 是 wpf 中 Xaml 元素的名称。
我找到了用百分比显示文件传输进度的代码。请在下面找到 Xaml 和 wpf window.
的 c# 代码Xaml 使用 wpf 在 window 中显示百分比。
<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() + "%");
}));