[devel][c#] フォームとスレッド
vs2008のc#で。
デフォルトの状態のまんまのFormにLabelを一つ貼り付けて、Dockはfill。これに適当に文字を入れただけのもの。
これを、ThreadPool.QueueUserWorkItemで表示すると、Labelの部分が欠けて、あるいは透明になって、裏が透ける状態になる。
マウスポインタをもっていっても、時計状態。
どういうこと?
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Threading; namespace FormInThread { static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var f1 = new Form1(); ThreadPool.QueueUserWorkItem(new WaitCallback((Object obj) => f1.Show())); Application.Run(); } } }
アラートソフトなんかで、アラートフォームを表示してるのはスレッドじゃないんだろうか。
それにしても、久しぶりにC#を触ったらほとんど忘れてた。
0からじゃないものの、1.5くらいから勉強し直し。
まったくの入門からやるのはだるい感じだし、中級編にはまだ歯が立たない、という中途半端さ。