File transfer details binding continuously until file transfered in window using WPF

隐身守侯 提交于 2019-12-07 21:12:20

问题


I have created project to transferring file from client to server. I have done file transferred and got file transferred details such as file name (something.avi) and percentage (10%) of file transferred like below, Whenever I'm transferring a file, I'm using below event handler for knowing the file transferred details.

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;

I need to bind this transferred details in window. I have done binding while file transferred. But I need how to bind every second file transferred details in window using WPF. Because I need to show progress of file transferring.


回答1:


The WinSCP .NET assembly Session.FileTransferProgress event is triggered continuously.

So all you need to do, is to update your control in the event handler.

As the event is triggered on a background thread, you need to use Invoke.

See Updating GUI (WPF) using a different thread.




回答2:


I have found the solution with help of @Martin Prikryl..Please find below code

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

This is for progress bar moving with file trasnfer progress..I will post once done the display progress in percentage.

progressBar is name of Xaml element in wpf.




回答3:


I have found the code for display file transfer progress with percentage. Please find the below both Xaml and c# code for wpf window.

Xaml for percentage display in window using wpf.

<TextBlock x:Name="percentage" Text=""  Height="27" Width="50" FontSize="20"/>

C# code for binding the file transfer progress in percentage.

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


来源:https://stackoverflow.com/questions/43364376/file-transfer-details-binding-continuously-until-file-transfered-in-window-using

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!