##概要
描画にアホ程時間がかかるので、画面を要素で分割し、並列処理にしようと思った.
##問題点
パラレルとかで別スレッドに処理を任せても、メッセージループは一緒な訳ですよ。
例えば↓なんか片方が重い処理をすると片方も止まる。
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は命名ルールをある程度統一してほしい。