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

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

新規登録して質問してみよう
ただいま回答率
85.37%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

パフォーマンス

コード効率の向上や計算に関する質問には、このタグを使ってください。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

1889閲覧

VBのhttpClientのパフォーマンスについて

upo78

総合スコア1

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

パフォーマンス

コード効率の向上や計算に関する質問には、このタグを使ってください。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2021/08/23 07:01

編集2021/08/23 10:27

前提・実現したいこと
.NET Framework4.8で、windowsフォームアプリを作りました。

VisualStudio2019のテスト機能を使って起動させ、画面上のボタンを押すと、restApiからデータを読み込み、画面に表示出力します。
この処理に2秒ほどかかります。
ビルド後の.exeファイルから起動しても同じ秒数で処理を行いたいです。

発生している問題
ビルド後の.exeから起動して、同様に動かすと30秒ほど時間が掛かります。
処理は正常に行われているので、何が問題か分かりません。

各処理の時間を計ってみたところ、該当部は下記のソース部分でした。
どのような問題の可能性がありますでしょうか。

※呼び出し先のapiを直接叩くと、返答までの時間は1秒でした。

該当部のソース
Dim requestUrl = ”https://xxxxx.jp/api/xxxx”
Using httpClient As New System.Net.Http.HttpClient()
Using httpResponse As System.Net.Http.HttpResponseMessage = httpClient.GetAsync(requestUrl).Result

補足情報(FW/ツールのバージョンなど)
windows10home
VisualStudio2019
.NET Framework4.8
windowsフォームアプリ

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/08/23 08:46 編集

VB.NET のタグをつけてもらった方がより注目が集まって良いと思います。 HttpClient の生成と Dispose を繰り返して socket が枯渇しているとかはない(その他そのレベルのプリミティブなことは確認済み・おさえてある)と思って良いのですか? Fiddler の Statistics などを使ってどこで時間を使っているか調べることはできませんか?
upo78

2021/08/23 15:33

>SurferOnWwwさん ありがとうございます。 socket枯渇は考えていませんでした。disposeのタイミングを考えてみます。
dodox86

2021/08/23 17:02

@質問者 upo78さん > socket枯渇は考えていませんでした。disposeのタイミングを考えてみます。 この件に関しては、evin101さんが案内してくださった記事中からリンクされている [HttpClientをusingで囲わないでください] - https://qiita.com/superriver/items/91781bca04a76aec7dc0 が関連しているので、そちらを参考にされると良いはずです。
upo78

2021/08/23 17:16

ありがとうございます。
guest

回答1

0

自己解決

こちらの記事が参考にして、HttpWebRequestに変更しproxyを外しました。
vs2019のテスト環境と同じ速さで値を取れました。
https://qiita.com/yaju/items/771bdf1eddcd2f35bf06

'HttpWebRequestを作成 Dim webreq As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(requestUrl), System.Net.HttpWebRequest) webreq.Proxy = Nothing Dim webres As System.Net.HttpWebResponse = CType(webreq.GetResponse, System.Net.HttpWebResponse)

evin101さん、ありがとうございました。

投稿2021/08/23 15:30

編集2021/08/23 15:35
upo78

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問