[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くらいから勉強し直し。
まったくの入門からやるのはだるい感じだし、中級編にはまだ歯が立たない、という中途半端さ。