5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

別メッセージループでのフォーム起動

Last updated at Posted at 2014-12-10

##概要
描画にアホ程時間がかかるので、画面を要素で分割し、並列処理にしようと思った.
##問題点
パラレルとかで別スレッドに処理を任せても、メッセージループは一緒な訳ですよ。
例えば↓なんか片方が重い処理をすると片方も止まる。
http://kawakawa2000.jugem.jp/?eid=55
##解決策
Application.Runメソッドの使用

##具体例

program.cs
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    //別スレッドで二枚目起動
    Thread t1 = new Thread(new ThreadStart(anotherThread));
    t1.Start();

    //一枚目起動
    Application.Run(new Form1());

    // 終了処理
    t1.Abort();
    t1.Join();
}

public static void anotherThread()
{
   Form2 anotherForm = new Form2();
    //二枚目起動
    Application.Run(anotherForm);
}	
  • とりあえず、片方のタイマースリープしても、もう片方は更新を続けた。
  • 静的クラスもそれぞれインスタンス化されるかと思ったら共有できた。

##結論
C#では様々な並列処理に対して、スレッド、メッセージループの二要素で考える必要があるのかもしんまい。言葉は間違ってたら申し訳。
DOBON先輩もこの特性を知らないみたいでした。
http://dobon.net/vb/dotnet/form/runvsshowdialog.html
うちの会社で一番頼りになるDOBON先輩も知らなかったから
こんな仕様が必要になる時点でハードウェア側の設計ミスだね!

C#で画像大量に使って低スペックマシンで動かしてね(はぁと)ってのがおかしい訳だ。
何が技術開発グループだ!くたばれ!
あとvisualstudioは命名ルールをある程度統一してほしい。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?