0

我是 C# 的新手(我来自 C),所以我对异步操作有点困惑。

我有一个类,它具有我程序的所有“重要”功能,它下载文件并将其添加到文件夹等。

然后我有一个 WPF 表单(图形界面),所以当用户选择一个文件夹时,它会扫描文件夹中的所有文件并下载所有音乐曲目的封面。

我想做一个进度条,明明必须是异步的,不知道该由谁来做。

我想当用户点击按钮时我必须异步调用“重要”函数

有什么好的教程可以做这个吗?或者你能告诉我基本步骤吗?

4

2 回答 2

1

您可以使用BackgroundWorker组件,您可以按照本教程来使您的进度条正常工作。

于 2012-12-05T10:19:39.010 回答
0

欢迎来到 C#.Net =D

TPL(任务并行库)是帮助您进行异步编程的类的集合,并且由于您使用 WPF 来显示数据,我还建议您阅读有关MVVM (Model-View-ViewModel) 的信息。对于具有用户界面的应用程序来说,这是一种非常重要的设计模式。

享受阅读:D

在你完成它之后,也许下面的代码示例可以帮助你实现你的异步行为。

在 MainWindow.xaml 中:

<ProgressBar Name="progressBar" Visibility="{Binding ProgressBarVisible, Converter=booleanVisibilityConverter}" IsIndeterminate="True" Width="100"/>

在 MainWindowViewModel.cs 中:

public MainWindowViewModel : INotifyPropertyChanged
{
    public bool ProgressBarVisible {
        get { return progressBarVisible; }
        set { 
            progressBarVisible=value;
            RaisePropertyChanged("ProgressBarVisible");
        }
    }

    public void LoadImages() 
    {
        ProgressBarVisible = true;

        //your logic for downloading the images

        ProgressBarVisible = false;
    }

    public void DownloadImagesAsync()
    {
        Task.Factory.StartNew(LoadImages);
    }
}
于 2012-12-05T10:56:07.400 回答