0

私は C# が初めてなので (C 出身です)、非同期操作について少し混乱しています。

プログラムのすべての「重要な」機能を備えたクラスがあり、ファイルをダウンロードしてフォルダーに追加するなどです。

そして、私は WPF フォーム (グラフィック インターフェイス) を持っているので、ユーザーがフォルダーを選択すると、フォルダー内のすべてのファイルがスキャンされ、すべての音楽トラックのカバー アートがダウンロードされます。

プログレスバーを作成したいのですが、明らかに非同期でなければならず、誰がこれを行うべきかわかりません。

ユーザーがボタンをクリックしたときに、「重要な」関数を非同期で呼び出す必要があると思います

これを作るための良いチュートリアルはありますか?または、基本的な手順を教えていただけますか?

4

2 に答える 2

1

BackgroundWorkerコンポーネントを使用できます。進行状況バーを機能させるために、このチュートリアルに従うことができます。

于 2012-12-05T10:19:39.010 に答える
0

C#.Net = D へようこそ

TPL (Task Parallel Library)は、非同期プログラミングに役立つクラスのコレクションです。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 に答える