请问大家一个关于Thread的问题

Zricepig 2005-07-03 09:38:50
程序拥有一个Splash窗口和一个主窗口
我使用下面函数初始化Splash窗口
public static void Main()
{
System.Threading.Thread MyThread;
MyThread = new System.Threading.Thread(new System.Threading.ThreadStart(LaunchForm));
MyThread.ApartmentState = System.Threading.ApartmentState.STA;
MyThread.Start();
}

public static void LaunchForm()
{
Application.Run(new frmSplash());
return;
}
然后在Splash窗口里验证用户和密码信息,最后new出一个主窗头
使用ShowDialog窗口。
但是在LaunchForm的return后,跳出NullReferenceException错误,请问这是什么回事啊?
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
iGray 2005-07-04
  • 打赏
  • 举报
回复
刚才打错了个字
不“要”主Form 改为 不“在”主Form
iGray 2005-07-04
  • 打赏
  • 举报
回复
看你的 Main
在Main中本来就是一个主线程,你又启动一个线程LauchForm(worker线程),然后,你在这个线程中又Application.Run()又一个线程,这是一个UI线程,带有消息循环。

问题在于:LauchForm返回以后,Application.Run()是被LauchForm()创建的,此时,它被强行中止。

既然是splash窗口,仅用来登陆验证身份的,为什么,不要主Form的Load()中new一个splash Form出来,再ShowDialog,根据ShowDialog的返回值再进一步处理,要么用个while(1)循环new splash form,这样密码错误时,关了再new,如果是退出就exit(0);关闭整个应用程序。
cdo 2005-07-03
  • 打赏
  • 举报
回复
你不要用多线程试试。
bitsbird 2005-07-03
  • 打赏
  • 举报
回复
使用ShowDialog窗口
--------------
是什么意思
cuike519 2005-07-03
  • 打赏
  • 举报
回复
错误堆栈贴出来看看!看你上面的代码本身没有什么问题!

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧