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

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

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

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

C#

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

Q&A

解決済

2回答

935閲覧

子フォーム生成時からcomポートを確認するためにタスクを使うとFormの生成が遅くなるのを改善したい。

hafiz

総合スコア11

Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

C#

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

0グッド

0クリップ

投稿2017/08/24 09:18

Form1のボタンを押してForm2を開き
asyncの関数の中でループしcomポートの確認をすると
Form2の生成が遅くなります。

Form1 側
private void buttonStart_Click(object sender, EventArgs e)
{
Form2 formWrite = new Form2();
formWrite.ShowDialog(this);
}
///////////////////////////////////
//////////////////////////////////

Form2 側
public async void Comunicate()
{
for (; ; )
{
await Task.Run(() =>
{

}); }

}

private void Form2_Shown(object sender, EventArgs e)
{
Comunicate();
}

良い方法がありましたら教えてください
よろしくお願いします。

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

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

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

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

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

hihijiji

2017/08/24 09:25

何のために、どのようなループをしているのでしょう?
hafiz

2017/08/24 09:30

comポートでUSBを接続し機器が接続しているかどうかです。
hihijiji

2017/08/24 09:56

シリアルポートはCPU負荷が高くなりがちです。PC全体が遅くなってませんか?
hafiz

2017/08/24 10:00

おっしゃるとおり重たいです。ループにThread.Sleep(100);を入れていますがあまりかわりません。
guest

回答2

0

Comunicate内で無限ループしてるからでは?
for(;;)の無限ループ内で接続確認をするつもりなら、以下の間違いでは?

C#

1public async void Comunicate() 2{ 3 await Task.Run(() => 4 { 5 for (;;) 6 { 7 //この中で接続確認 8 } 9 }); 10}

※多くの人に見てもらって回答が欲しいのならマークダウンで投稿したほうが良いと思います。

投稿2017/08/24 10:02

ebiryo

総合スコア797

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

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

hafiz

2017/08/24 10:13

回答ありがとうございます。 試しましたが変わりませんでした。 また、よろしくおねがいします。
ebiryo

2017/08/24 10:21

これで変わらないのであれば、示されたコード以外のところに問題があるとしか思えないです。
hafiz

2017/08/24 11:11

Comunicate();の前に this.Refresh(); を入れたらうまくいきました。 いろいろとありがとうございました。
guest

0

自己解決

Comunicate();の前に
this.Refresh();
を入れたらうまくいきました。
いろいろとありがとうございました。

投稿2017/08/24 11:11

hafiz

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問