質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Q&A

解決済

1回答

3709閲覧

APIの非同期処理について教えてください

devbgn

総合スコア22

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

0グッド

0クリップ

投稿2021/04/13 10:07

C#の非同期処理について困っております。
Boxの開発者ガイドやBoxサポートで情報を調べたものの該当する情報がなくこちらで質問させて頂きました。

〇問題点
今、検証用にBoxのSDKを用いてAPIを叩いてBox内のファイル情報を取得するアプリを開発しています。
しかしAPIの実行結果であるJSONが得られず困っております。
もし何かヒントになる情報などありましたらご提供頂けますとありがたく思います。
(なお補足資料にあるSDKに記載のある認証方式のうちJWT認証にて処理を実装しています。)

〇試したことと結果
検証したこととして、windowsフォームアプリにて下記のプログラムを動作させました。
async/awaitを用いて値が返ってきてから処理を進めるようにしたつもりですが、
結果としてはクリックイベントのtaskに下記の値が入りました。
Id = 28, Status = WaitingForActivation, Method = "{null}", Result = "{未計算}"

〇サンプルソース

C#

1 private void btn1_Click(object sender, EventArgs e) 2 { 3 var task = method1(); 4 } 5 6 private async Task method1() 7 { 8 //認証 9 var reader = new StreamReader(Environment.CurrentDirectory + "./config.json"); 10 var json = reader.ReadToEnd(); 11 var config = BoxConfig.CreateFromJsonString(json); 12 var sdk = new BoxJWTAuth(config); 13 var token = sdk.AdminToken(); 14 BoxClient client = sdk.AdminClient(token); 15 16 //ファイル情報取得 17 BoxFile f = await client.FilesManager.GetInformationAsync(id: "1234567890"); 18 }

〇参考情報
・BOX SDK (.NET)
https://github.com/box/box-windows-sdk-v2
・BOXガイド
https://developer.box.com/guides/
・BOXサポート
https://developer.box.com/support/
・開発環境
Visual studio 2017, C#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2021/04/13 18:45

> もし何かヒントになる情報などありましたらご提供頂けますとありがたく思います。 そもそも論としてasync/awaitの使い方わかってますか? わかってなかったらソレ勉強するところからじゃないの。 それをイチからここで教えてほしいという質問?
退会済みユーザー

退会済みユーザー

2021/04/14 00:50

質問者さん、無言ですが、レスが付いているのでそれに対するフィードバックを書きましょう。役に立った/立たなかったぐらいの返事はできるのでは? 役に立たなかったなら、どこがダメなのか書いてもらえると、より期待する回答が出てくるかも。とにかく無言は NG です。
devbgn

2021/04/14 01:11

>gentaroさん ご指摘ありがとうございます。 自分なりに調べてみたもののまだasync/awaitを十分に理解していない状況です。ご回答から察するに初歩的なところでつまづいていると思いますので、再度調査をしてみたいと思います。
devbgn

2021/04/14 01:18

>SurferOnWwwさん 回答が遅れて申し訳ありません。 先ほどこちらの回答に気づきました。 私なりに調査し、SurferOnWwwさんの回答と同じ実装に行き着きました。 下記、回答に状況を記載します。
guest

回答1

0

ベストアンサー

Box とか全く分かりませんが、普通に async/await/Task を使う非同期のイベントハンドラなら以下のようにすればいいはずです。

private async void btn1_Click(object sender, EventArgs e) { await method1(); }

Box とかの特殊事情があってハズレでしたらすみません。

投稿2021/04/13 11:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

devbgn

2021/04/14 01:24

ご回答ありがとうございました。 非同期処理が初めてで十分に理解できておりませんでしたが、ご提示頂いたサンプルコードをベースにasync/awaitの仕組みを整理し、理解を深めたいと思います。 なおご提示頂いた内容でコードを実行したところ下記のようにBoxSDKの例外が捕捉されました。 Box.V2.Exceptions.BoxException: 'The API returned an error [NotFound | *******] not_found - Not Found' こちらの例外はhttps://github.com/box/box-windows-sdk-v2/issues/579などにもヒントがありそうですし、本件の趣旨とは逸れてしまうと思いますので、一旦質問はクローズにしたいと思います。 お陰様で少し前に進めそうです。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問