📄 frmmain.cs
字号:
this.Noti.Click += new System.EventHandler(this.Noti_Click);
//
// lbmo
//
this.lbmo.Location = new System.Drawing.Point(264, 136);
this.lbmo.Name = "lbmo";
this.lbmo.Size = new System.Drawing.Size(56, 23);
this.lbmo.TabIndex = 5;
this.lbmo.Text = "0";
//
// frmMain
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(384, 185);
this.Controls.Add(this.l6);
this.Controls.Add(this.lblSocketStatus);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.lblSocket);
this.Controls.Add(this.label3);
this.Controls.Add(this.lblReadySend);
this.Controls.Add(this.label2);
this.Controls.Add(this.lblCount);
this.Controls.Add(this.label1);
this.Controls.Add(this.statusBar);
this.Controls.Add(this.lblMo);
this.Controls.Add(this.lbCount);
this.Controls.Add(this.lbmo);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Menu = this.mainMenu;
this.Name = "frmMain";
this.ShowInTaskbar = false;
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.Text = "Cngp2.0";
this.Closing += new System.ComponentModel.CancelEventHandler(this.frmMain_Closing);
this.Load += new System.EventHandler(this.frmMain_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new frmMain());
}
/// <summary>
/// 程序启动,建立网关连接
/// 实例化获取栏目信息类,调用存储过程类
/// 获取栏目发送名称和时间
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[LastModified("2005-12-19","检查读取参数,连接网关")]
[LastModified("2006-03-14","增加Mt,Mo累加的事件处理")]
private void frmMain_Load(object sender, System.EventArgs e)
{
try
{
//
//是否只能有一个实例,如果不是,那么关闭程序
//
if(ConfigInformation.MultiApp!="TRUE")
{
if(Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length>1)
{
this.Dispose();
Application.Exit();
}
}
//
//开始启动程序
//
represent.StartProgram();
//
//注册Mt,Mo变化导致的事件
//
CngpProtocol.MtOnChange+=new Cngp.CngpProtocol.MtChangeHandler(CngpProtocol_MtOnChange);
CngpProtocol.MoOnChange+=new Cngp.CngpProtocol.MtChangeHandler(CngpProtocol_MoOnChange);
//
//设置版本信息
//2006-06-21
//
statusBar.Text="最后更新日期2007-04-03";
}
catch(Exception ex)
{
MessageBox.Show(ex.Message.ToString()+"\r\n"+
ex.StackTrace.ToString(),"LoadError");
EndForm();
}
}
/// <summary>
/// Mt变化导致的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[LastModified("2006-03-14","显示Mt累加")]
private void CngpProtocol_MtOnChange(object sender,MtchangeEventArgs e)
{
this.lbCount.Text=e.Mtcount.ToString();
}
/// <summary>
/// MO 变化导致的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[LastModified("2006-03-14","显示Mo累加")]
private void CngpProtocol_MoOnChange(object sender,MtchangeEventArgs e)
{
this.lbmo.Text=e.Mtcount.ToString();
}
/// <summary>
/// 显示程序的发送,接收等参数
/// </summary>
private void ShowSequence()
{
lblCount.Text=CngpProtocol.submitArray.Count.ToString(); //提交后没有回复的
lblSocketStatus.Text=Represent.ArrayTaskTime.Count.ToString(); //调度栏目数
//显示准备发送信息的数量
lblReadySend.Text=CngpProtocol.readytoSendArray.Count.ToString();
//显示连接数
lblSocket.Text=Represent.ProtocolArray.Count.ToString();
l6.Text=Represent.threadCheckSubmitArray.ThreadState.ToString();
}
/// <summary>
/// 窗体关闭时,提示用户是否确实要退出程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void frmMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
DialogResult result=MessageBox.Show("确定要退出?","Are You Sure?",
MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(result==DialogResult.Yes)
{
EndForm();
}
else
{
e.Cancel=true;
}
}
/// <summary>
/// 关闭程序,清理资源
/// </summary>
[LastModified("2005-11-12","关闭程序,清理资源")]
private void EndForm()
{
//
//终止Represent Class 实例
//
represent.EndRepresent();
//
//退出程序
//
Application.Exit();
}
/// <summary>
/// 菜单按钮SendFee事件
/// 启动threadFee进程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuItemSendFee_Click(object sender, System.EventArgs e)
{
//发送计费信息线程
threadFee=new Thread(new ThreadStart(SendFee));
threadFee.Priority=ThreadPriority.Normal;
threadFee.Start();
Logs.writeLog("Fee Thread Start");
}
/// <summary>
/// 发送计费信息线程调用的方法
/// </summary>
[LastModified("2005-12-20","计费线程调用的方法")]
private void SendFee()
{
timerFee.Interval=Convert.ToInt32(ConfigInformation.Sendspeed);
timerFee.Elapsed+=new ElapsedEventHandler(timerFee_Elapsed);
timerFee.Start();
}
/// <summary>
/// 发送计费信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[LastModified("2005-12-20","不再检测网关返回的状态值,避免网通数据库中没有信息"
+"的用户发送计费时,返回错误,从而导致不能继续发送计费信息")]
private void timerFee_Elapsed(object sender,ElapsedEventArgs e)
{
try
{
//删除一下条件,不在检测网关返回的状态值,直接发送
//&& CngpProtocol.FeebackOk==true
if(CngpSendMessage.ArrayMessage.Count<10 )
{
if(cngpsendmessage.IfFeeData()==false)
{
//结构
SendInfo Sendinfo=new SendInfo();
cngpsendmessage.GetFee(
ref Sendinfo.Mobileid,
ref Sendinfo.Content,
ref Sendinfo.FeeType,
ref Sendinfo.FeeCode,
ref Sendinfo.ServiceId,
ref Sendinfo.SourceId
);
//
uint Sequence=0;
//send
byte[] byteContent=Encoding.GetEncoding("GB2312").GetBytes(Sendinfo.Content.Replace("\0",""));
byte Length=(byte)byteContent.Length;
CngpProtocol cngpProtocol=(CngpProtocol)Represent.ProtocolArray[0];
cngpProtocol.Cngp_Submit(
ConfigInformation.CorpId, //spId
(byte)CngpProtocol.SubType.MTDeliver, //subtype
(byte)CngpProtocol.NeedReport.Need, //needReport
(byte)CngpProtocol.Priority.High, //priority
Sendinfo.ServiceId, //serviceid
Sendinfo.FeeType, //feetype
(byte)(CngpProtocol.FeeUserType.Dest), //feeUsertype
Sendinfo.FeeCode, //feecode
((byte)CngpMessage.Character.GB), //msgFormat
"0", //validtime
"0", //attime
Sendinfo.SourceId.Trim(),
Sendinfo.Mobileid.Trim(),
1,
Sendinfo.Mobileid.Trim(),
Length,
Sendinfo.Content.Trim(),
ref Sequence
);
Sendinfo.Sequence=Sequence;
//加入array
lock(CngpProtocol.submitArray)
{
CngpProtocol.submitArray.Add(Sendinfo);
}
}
else if(cngpsendmessage.IfFeeData()==true)
{
Logs.writeLog("Fee Thread Terminated");
timerFee.Close();
Thread.CurrentThread.Abort();
Thread.CurrentThread.Join(1000);
}
}
}
catch(Exception ex)
{
Logs.writeLog(string.Concat(
ex.Message,
"\r\n",
ex.StackTrace.ToString(),
"\r\n",
ex.TargetSite.ToString()
),false);
}
}
/// <summary>
/// 显示参数信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[LastModified("2005-12-19","显示参数信息")]
private void timerCheckConnection_Tick(object sender, System.EventArgs e)
{
try
{
//显示Sequence
ShowSequence();
}
catch(Exception ex)
{
Logs.writeLog(ex.Message.ToString(),false);
Logs.writeLog(ex.StackTrace.ToString(),false);
Logs.writeLog(ex.TargetSite.ToString(),false);
Logs.writeLog(ex.Source.ToString(),false);
}
}
/// <summary>
/// 菜单恢复选项
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuRestore_Click(object sender, System.EventArgs e)
{
this.Activate();
this.WindowState=FormWindowState.Normal;
}
/// <summary>
/// 菜单结束选项
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuExit_Click(object sender, System.EventArgs e)
{
EndForm();
}
/// <summary>
/// 用户单击托盘图标,如果最小化,那么恢复,如过正常,那么最小化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Noti_Click(object sender, System.EventArgs e)
{
if(this.WindowState==FormWindowState.Normal)
{
this.WindowState=FormWindowState.Minimized;
}
else
{
this.Activate();
this.WindowState=FormWindowState.Normal;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -