日期:2014-05-20  浏览次数:20836 次

在线程中打开类似msn的消息提示窗口
最近开发碰到个严重的问题,请各位大人帮个忙

不知道各位知道taskbarNotifier这个类吗?网上有下,这是个类似msn的消息提示窗口,刚开始一切都是那么完美,我做了设置,然后点击,右下角弹出了个很漂亮的窗体,很好

但是当我使用线程时就不一样了,没反应,就是没反应,什么反应都没有,跟踪了一下,也没找到原因何在?

本来我以为这和在线程中打开新窗体的问题是相同的,但是之后发现不是那么回事,

我把打开窗体的函数贴出来

private   void   showwiindow()
{
if   (textBoxTitle.Text.Length==0   ||   textBoxContent.Text.Length==0)
{
MessageBox.Show( "Enter   a   title   and   a   content   Text ");
return;
}
if   (!IsNumeric(textBoxDelayShowing.Text)   ||   !IsNumeric(textBoxDelayStaying.Text)   ||   !IsNumeric(textBoxDelayHiding.Text))
{
MessageBox.Show( "Enter   valid   Delays   (integers) ");
return;
}

taskbarNotifier2.CloseClickable=checkBoxCloseClickable.Checked;
taskbarNotifier2.TitleClickable=checkBoxTitleClickable.Checked;
taskbarNotifier2.ContentClickable=checkBoxContentClickable.Checked;
taskbarNotifier2.EnableSelectionRectangle=checkBoxSelectionRectangle.Checked;
taskbarNotifier2.KeepVisibleOnMousOver=checkBoxKeepVisibleOnMouseOver.Checked; //   Added   Rev   002
taskbarNotifier2.ReShowOnMouseOver=checkBoxReShowOnMouseOver.Checked; //   Added   Rev   002
taskbarNotifier3.Show(textBoxTitle.Text,textBoxContent.Text,Int32.Parse(textBoxDelayShowing.Text),Int32.Parse(textBoxDelayStaying.Text),Int32.Parse(textBoxDelayHiding.Text));

}

接下来是线程
private   void   button2_Click(object   sender,   System.EventArgs   e)
{
Thread   receivex   =   new   Thread(new   ThreadStart(this.showwiindow));
receivex.Start();
Thread.Sleep(6000);
}

问题是出在哪儿呢?
各位大人能否想想办法?在线期待中...

------解决方案--------------------
用下平民百姓的代码,嘿嘿

delegate void showwiindowHandler();
private void showwiindow()
{
if (this.InvokeRequired)
{
showwiindowHandler si = new showwiindowHandler(this.showwiindow);
this.BeginInvoke(si, new object[0]);
return; //这里要返回,把函数调用权交给this的创建线程
}
//这里是你的其它的代码
}
------解决方案--------------------
呵呵,对,是要用Return返回一下,

今天老是出错,真是羞愧难当啊,汗一下...