http://expert.csdn.net/Expert/topic/2767/2767041.xml?temp=.4337427
看得不是太明白
看得不是太明白
解决方案 »
- 为什么DotNetBar.Bar控件在停靠状态时不显示Text属性里的名字?
- 大家都说说当调试时遇到错误都咋办?
- C# 按照panel里面的内容打印出来
- 如何使用ADO.NET对GridView进行编辑和删除,用三层!
- 求助
- Word版本转换的一个小问题,在线等,急!!!!
- 请推荐一款能自动将原代码转换为类图的工具
- 中文字符在服务器和客户端传后变成乱码,怎么解决,代码如下:
- 要实现这样的功能,用什么方法比较好?在线
- 请给我一盏明灯!!!!!!!!!!!
- 如何得到Excel中表单的数量和名称
- 我在DataSet里添加了一个新的表,我希望用Adapter.update可以将这个表存到数据库中,请问应该如何实现,谢谢
st.Join(100);
//滚动
if (pw.IndexOf("1") != -1 && ConfigurationSettings.AppSettings["ScrollBar"] == "y")
{
if (body.Length >80)
{
strmsg = title + " " + body.Substring(0,70) + "......";
}
else
{
strmsg = title + " " + body;
}
Thread shscr = new Thread(new ThreadStart(showscroll));
shscr.IsBackground = true;
shscr.Start();
}
//气球
if (pw.IndexOf("2") != -1 && ConfigurationSettings.AppSettings["Balloon"] == "y")
{
Thread shscr = new Thread(new ThreadStart(showballoon));
shscr.IsBackground = true;
shscr.Start();
}
//窗体
if (pw.IndexOf("3") != -1 && ConfigurationSettings.AppSettings["PopForm"] == "y")
{
Thread shscr = new Thread(new ThreadStart(showform));
shscr.IsBackground = true;
shscr.Start();
}st.Join(100);这一句作为实时监听会不会引起什么问题,如信息丢失?
//滚动
if (pw.IndexOf("1") != -1 && ConfigurationSettings.AppSettings["ScrollBar"] == "y")
{
if (body.Length >80)
{
strmsg = title + " " + body.Substring(0,70) + "......";
}
else
{
strmsg = title + " " + body;
}
Thread shscr = new Thread(new ThreadStart(showscroll));
shscr.IsBackground = true;
shscr.Start();
}
//气球
if (pw.IndexOf("2") != -1 && ConfigurationSettings.AppSettings["Balloon"] == "y")
{
Thread shscr = new Thread(new ThreadStart(showballoon));
shscr.IsBackground = true;
shscr.Start();
}
//窗体
if (pw.IndexOf("3") != -1 && ConfigurationSettings.AppSettings["PopForm"] == "y")
{
Thread shscr = new Thread(new ThreadStart(showform));
shscr.IsBackground = true;
shscr.Start();
}st.Join(100);
最后没有再加st.Join(100)也没问题
To:KentYu(恳鱼)
把st.Join(100)注释掉就会死在打开窗体那其实我加了st.Join(100)后问题是解决了,但由于本人对线程不熟悉,不知这样做效果如何,是否还有更好的做法!
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;using System.Threading;namespace FormTest
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private Thread myThread;
private delegate void OpenNewFormHandler();
private event OpenNewFormHandler openNewForm;
private System.ComponentModel.Container components = null; public Form1()
{
InitializeComponent();
myThread = new Thread(new ThreadStart(RunThread));
this.openNewForm += new OpenNewFormHandler(Form1_openNewForm);
myThread.Start();
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} [STAThread]
static void Main()
{
Application.Run(new Form1());
} #region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(396, 221);
this.Name = "Form1";
this.Text = "Form1"; }
#endregion
private void RunThread()
{
string vvv;
for(int i=0;i<10;i++)
{
vvv = i.ToString();
}
if(openNewForm!=null)
{
openNewForm();
}
} private void Form1_openNewForm()
{
Form2 form2 = new Form2();
form2.ShowDialog();
}
}
}
private event RemindHandler remind; public Form1()
{ InitializeComponent(); rduc = new UdpClient(5001);
rmipep = null; showicon();
//startreceive();
st = new Thread(new ThreadStart(startreceive));
st.Start(); } /// <summary>
/// 接收UDP信息
/// </summary>
private void Receive()
{ try
{
while(true)
{
XmlSerializer msgser = new XmlSerializer(typeof(MsgDetails));
MemoryStream stream = new MemoryStream(); byte[] rcbyte = rduc.Receive(ref rmipep);
stream.Write(rcbyte,0,rcbyte.Length);
stream.Position=0; md = (MsgDetails)msgser.Deserialize(stream);
title = md.MsgTitle;
body = md.MsgBody;
msender = md.MsgSender;
pw = md.PopUpWay;
remind();
}
}
private void ShowRemind()
{
if (pw.IndexOf("1") != -1 && ConfigurationSettings.AppSettings["ScrollBar"] == "y")
{
strmsg = "主题:" +title + " 内容:" + body;
showscroll();
}
//气球
if (pw.IndexOf("2") != -1 && ConfigurationSettings.AppSettings["Balloon"] == "y")
{
showballoon();
}
//窗体
if (pw.IndexOf("3") != -1 && ConfigurationSettings.AppSettings["PopForm"] == "y")
{
showform();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
{ InitializeComponent(); rduc = new UdpClient(5001);
rmipep = null; showicon(); st = new Thread(new ThreadStart(startreceive));
this.remind +=new RemindHandler(ShowRemind);
st.Start(); }
private event RemindHandler remind1,remind2,remiand3;
public Form1()
{ .
.
this.remind1=new RemindHandler(showscroll);
this.remind2=new RemindHandler(showballoon);
this.remind3=new RemindHandler(form);
.
}private void Receive()
{ try
{
while(true)
{
XmlSerializer msgser = new XmlSerializer(typeof(MsgDetails));
MemoryStream stream = new MemoryStream(); byte[] rcbyte = rduc.Receive(ref rmipep);
stream.Write(rcbyte,0,rcbyte.Length);
stream.Position=0; md = (MsgDetails)msgser.Deserialize(stream);
title = md.MsgTitle;
body = md.MsgBody;
msender = md.MsgSender;
pw = md.PopUpWay;
ShowRemind();
}
}
private void Remind()
{
if (pw.IndexOf("1") != -1 && ConfigurationSettings.AppSettings["ScrollBar"] == "y")
{
strmsg = "主题:" +title + " 内容:" + body;
remind1();
}
//气球
if (pw.IndexOf("2") != -1 && ConfigurationSettings.AppSettings["Balloon"] == "y")
{
remind2();
}
//窗体
if (pw.IndexOf("3") != -1 && ConfigurationSettings.AppSettings["PopForm"] == "y")
{
remind3();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
可否留个MAIL,我把整份代码发过去
给我份瞧瞧吧!
[email protected]
谢谢了先!