0

約12個のメソッドを持つクラスがあります。ほとんどのメソッドは、かなり迅速に実行および完了します。ただし、メソッドのうち 2 つは、コースを実行するのにかなりの時間がかかる場合があります。周りを見回すと、BackgroundWorkerで実行したいと思います。しかし、私はまだこれの詳細に頭を悩ませていません。私は少し初心者です。

アプリケーションのメイン フォーム。

namespace EncodeDecode
{
    public partial class EnDecoder : Form
    {

        CodeMachine coder = new CodeMachine();
        // char[] letters = new char[94 + 33];
        List<string> words = new List<string>();

    }
}

public class CodeMachine
{
    public bool Encode()  // This takes a while
    {
    }

    public bool Decode()  // This takes a while
    {
    }

    public bool Load()  // This is quick
    {
    }

     .....              // The rest are quick too
     .....
}

}

では、BackgroundWorker で、クラスのコーダー インスタンス内で 2 つの長いメソッドを実行するにはどうすればよいでしょうか。

4

2 に答える 2

0

たぶん、メソッドasyncawaitその結果を作成できるので、次のようになります。

CodeMachine coder = new CodeMachine();

// run this async and await response (will not block the UI)
// it will sort of use it as a checkpoint to continue from
await coder.EncodeAsync();

次にCodeMachine、結果を返す非同期メソッドを作成します。

public class CodeMachine
{
    // naming convention has it ending with Async
    public async Task<bool> EncodeAsync()
    {
        // do something that takes a while here ....
    }
}

ここに詳細があります。

于 2013-05-30T04:03:20.450 に答える