素早い背景。構築したクラス ライブラリ内で Flurl を使用して、クラウド ストレージ API と通信するためのコードを簡素化しました。すべてのメソッドをテストするために使用されるコンソール アプリからライブラリを呼び出すと、美しく機能します。単純な winform でまったく同じクラス ライブラリを使用しようとすると、コンソール アプリを使用して非常に迅速に返される同じメソッドが結果を返さないようになりました。デバッグ時に、以下のコードは「.GetAsync()」行に到達した後、結果を返さず、デバッグ セッションの続行も妨げます。エラー メッセージはスローされません。
Flurl サイトで、誰かが同じ問題を抱えているように見えるというコメントを見つけましたが、推奨されたようにここに質問を投稿したようには見えません。私を正しい方向に向けることができるものは何でも大歓迎です。
非同期メソッドでラップされた Flurl コード
public async Task<AccountInfo> Authorize()
{
string credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(Utils.ToNonSecureString(accountId) + ":" + Utils.ToNonSecureString(applicationKey)));
var result = await B2UrlType.Authorize
.WithHeader("Authorization", "Basic " + credentials)
.GetAsync()
.ReceiveJson<AccountInfo>();
return result;
}
完全に機能するコンソールアプリ呼び出しコード
if (client == null)
{
var vault = new Vault();
Console.WriteLine("Retrieving account keys");
client = new Client(vault.GetAccountId(), vault.GetApiKey());
Console.WriteLine("Successfully retrieved account keys");
Console.WriteLine("Created new client");
client.Authorize().GetAwaiter().GetResult();
}
戻らない Winform 呼び出しコード
private Client client;
public MainWindow()
{
InitializeComponent();
var vault = new Vault();
client = new Client(vault.GetAccountId(), vault.GetApiKey());
client.Authorize().GetAwaiter().GetResult();
}