⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clsxuqiuchaxunkongzhi.cs

📁 怎样的图象处理的
💻 CS
📖 第 1 页 / 共 2 页
字号:
//===========================================================================
// Smarclient FPMS Demo Project a sample project for SmartClient technology.
// Smarclient FPMS Demo is designed and implemented bases Microsoft Application Block tech.
// Author: SFPMS Team, Date 2004-11
// Vision 1.0
// Revison History
//=============================================================================
using System;
using System.Configuration; 
using System.Data;
using System.Diagnostics; 
using System.Windows.Forms;
using System.Threading;
using System.Timers;  
using System.IO;
using System.Xml;
using Microsoft.ApplicationBlocks.ApplicationUpdater;
using Microsoft.ApplicationBlocks.SmartClient.Offline;
using JSW.Tool;
using JSW.FPMS.Tool;
using JSW.FPMS.Xiang.ShiTu;
using JSW.FPMS.Xiang.YeWu;
using JSW.FPMS.Xiang.ShuJu; 
using JSW.FPMS.Xiang.ShiJian;

namespace JSW.FPMS.Xiang.KongZhi
{
	/// <summary>
	/// clsXuQiuChaXunKongZhi 需求查询控制器,响应界面业务请求,处理反馈消息,管理应用程序状态等
	/// MVC结构中的Controler角色
	/// </summary>
	public class clsXuQiuChaXunKongZhi
	{
		#region 成员变量区域		
		//界面
		private XuQiuChaXunForm			jieMian			=	null;
		//MOAB引用
        private OfflineBlockBuilder		lixianKongZhi	=	null;
		//业务代表引用
        private clsYeWuDaiBiao			yewuDaiBiao     =	null;				
		//数据管理
		private clsShuJuGuanLi			shujuGuanLi		=	null;
		//网络状态
		private Microsoft.ApplicationBlocks.SmartClient.Offline.ConnectionState    wangluoZhuangTai;
		//MUAB引用
		private ApplicationUpdateManager gengXinKongZhi	= null;
		//组件更新线程
		private Thread      			gengXinXC		= null;
		//组件更新是否开始
		private bool					shifouGengXin	= false;
		private delegate void MarshalEventDelegate( object sender, UpdaterActionEventArgs e );
		//是否连接
		private bool                   shifouLianJie  =  false;
		
		
		#endregion

		#region 私有方法区域
		
		#region 事件响应方法区域
		/// <summary>
		/// 连接状态变化处理函数
		/// </summary>
		private void ConnectionManagerConnectionStateChangedEvent(object sender, 
			ConnectionStateChangedEventArgs args)
		{
			clsRiZhiChuLi.JiLuRiZhi("..........."+ args.CurrentState.ToString());
			wangluoZhuangTai = args.CurrentState;			
			if(Microsoft.ApplicationBlocks.SmartClient.Offline.ConnectionState.OnLine == wangluoZhuangTai)//已经上线
			{				
				shifouLianJie = true;
				//开始组件更新
				this.KaiShiZuJianGengXin(); 
				
			}
			else//没有上线
			{
				shifouLianJie = false;				
				//停止组件更新
				this.TingZhiZuJianGengXin();
				
			}
			//设置界面状态条情况
			this.jieMian.LianJieZhuangTai(this.shifouLianJie);	
			//设置界面数据更新时钟运行
			this.jieMian.SheZhiTimer(this.shifouLianJie);

		}

		/// <summary>
		/// 错误处理函数
		/// </summary>
		private void FailSafeServiceAgentErrorEvent(object sender, MethodExecutionFailureReportEventArgs args)
		{
			String cuowuXinXi = "";
			//错误处理
			if(args.Payload.FailureReason.GetType() == typeof(System.Web.Services.Protocols.SoapException))
			{
				
				System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(
					args.Payload.FailureReason.Message, 
					"---> ([^:]+):");
			
				if (mc.Count >= 1 && mc[0].Groups[1].Value == "System.Data.DBConcurrencyException")
				{
					cuowuXinXi += "数据同步错误";
				}
			}
			cuowuXinXi += args.Payload.FailureReason.Message;
			clsRiZhiChuLi.JiLuRiZhi(cuowuXinXi); 
			//根据情况,重新发送请求

		}

		/// <summary>
		/// 业务代表错误事件响应函数
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="args"></param>
		private void YeWuDaiBiaoReportErrorEvent(object sender, ReportErrorEventArgs args)
		{
			
			clsRiZhiChuLi.JiLuRiZhi(args.FailureReason);			
		}
		
		/// <summary>
		/// 需求提交返回处理函数
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="args"></param>
		private void XuQiuTiJiaoFanHui(object sender, XuQiuTiJiaoFanHuiShiJianArgs args)
		{
			
			clsRiZhiChuLi.JiLuRiZhi("需求提交返回......");			
		}
		/// <summary>
		/// 需求查询返回处理函数
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="args"></param>
		private void XuQiuChaXunFanHui(object sender, XuQiuChaXunFanHuiShiJianArgs args)
		{
			shujuGuanLi.ShuJuGengXin(clsChangLiang.SHUJU_XUQIU);  
			//如果需求数据变化了,更新页面
			if(shujuGuanLi.XuQiuBianHua())
			{
				this.jieMian.GengXinXuQiu(shujuGuanLi.HuoDeShuJu(clsChangLiang.SHUJU_XUQIU));  
			}			
			clsRiZhiChuLi.JiLuRiZhi("需求更新数据返回。。。。。。");
		}
		
		/// <summary>
		/// 获得基本数据返回处理函数
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="args"></param>
		private void HuoDeJiBenShuJuFanHui(object sender, HuoDeJiBenShuJuFanHuiShiJianArgs args)
		{
			shujuGuanLi.ShuJuGengXin(clsChangLiang.SHUJU_JIBENSHUJU); 			
		}
		
		/// <summary>
		/// 获得配置文件返回处理函数
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="args"></param>
		private void HuoDePeiZhiFanHui(object sender, HuoDePeiZhiXinXiFanHuiShiJianArgs args)
		{
			shujuGuanLi.ShuJuGengXin(clsChangLiang.SHUJU_PEIZHIXINXI);	
		}		
		
		/// <summary>
		///程序组件更新下载开始,使用异步调用方法,更新界面
		/// </summary>
		private void ChengXuXiaZaiKaiShi( object sender, UpdaterActionEventArgs e ) 
		{		
			this.jieMian.Invoke( 
				new MarshalEventDelegate(this.jieMian.XiaZaiKaiShi), 
				new object[] { sender, e } );
		}

		/// <summary>
		///程序组件文件可以运行,下载完成,并且经过检验后。
		/// </summary>
		private void ChengXuWenJianKeYiYunXing( object sender, UpdaterActionEventArgs e ) 
		{	
			if(this.jieMian.YunXinChengXu(e)) 
			{
				YunXingXinChengXu(e.ServerInformation);
			}
			
		}

		/// <summary>
		///程序组件可以下载,如果存在新的版本,获得该版本
		///2004-11-22 为了提高演示性能,根据设置来弹出发现新版本的对话框
		/// </summary>
		private void ChengXuZuJianKeYiXiaZai( object sender, UpdaterActionEventArgs e ) 
		{		
			if(!this.shifouLianJie) {
				//停止组件更新
				this.TingZhiZuJianGengXin(); 
				return;
			}
			//当发现新的版本的时候,如果设置为不提示,应用不弹出提示
			if(ConfigurationSettings.AppSettings[clsChangLiang.TISHIXINBANBEN].Equals(clsChangLiang.TISHI_XINBANBEN)) 
			{
				//提示是否下载新的程序
				string message = String.Format( 
					"发现新的乡级系统(版本:{0}),是否更新现有的乡级系统(版本:{1})?", 
					e.ServerInformation.AvailableVersion,  
					ConfigurationSettings.AppSettings["version"] ) ;
				//提示是否更新组件,如果不更新,停止MUAB
				DialogResult dialog = MessageBox.Show(this.jieMian, message, 
							"组件更新提示", MessageBoxButtons.YesNo,MessageBoxIcon.Question);

				if( DialogResult.No == dialog )
				{
					//停止组件更新
					this.TingZhiZuJianGengXin(); 
				}
			} 
			else 
			{
				//停止组件更新
				this.TingZhiZuJianGengXin(); 
			}
		}

		/// <summary>
		///程序组件下载完成
		/// </summary>
		private void ChengXuXiaZaiWanCheng( object sender, UpdaterActionEventArgs e ) 
		{		
			this.jieMian.Invoke( 
				new MarshalEventDelegate(this.jieMian.XiaZaiJieShu), 
				new object[] { sender, e } );
		}
		/// <summary>
		/// 文件检验失败
		/// </summary>
		private void gengXinKongZhi_FilesValidationFailed( object sender, UpdaterActionEventArgs e ) 
		{
			
			MessageBox.Show(this.jieMian,e.ServerInformation.ManifestSignature); 
		}
		
		
		#endregion	

		/// <summary>
		/// 运行新版本的应用程序
		/// </summary>
		/// <param name="server"></param>
		private void YunXingXinChengXu( ServerApplicationInfo server )
		{
			XmlDocument doc = new XmlDocument();
			doc.Load( AppDomain.CurrentDomain.SetupInformation.ConfigurationFile );
			string baseDir = doc.SelectSingleNode("configuration/appUpdater/UpdaterConfiguration/application/client/baseDir").InnerText;
			string newDir = Path.Combine( baseDir, "AppStart.exe" );
			ProcessStartInfo process = new ProcessStartInfo( newDir );
			process.WorkingDirectory = Path.Combine( newDir , server.AvailableVersion );
			Process.Start( process );
			this.XiaoHui();
			Environment.Exit( 0 );
		}
		/// <summary>
		/// 停止数据更新线程
		/// </summary>
		private void TingZhiShuJuGengXin() 
		{				
			//MOAB销毁				
			lixianKongZhi.Dispose();			
		}
		/// <summary>
		/// 开始组件更新
		/// </summary>
		private void KaiShiZuJianGengXin() 
		{
			if(!shifouGengXin) 
			{
				//获得MUAB实例
				this.gengXinKongZhi = new ApplicationUpdateManager();				
				//注册应用程序组件更新事件
				gengXinKongZhi.DownloadStarted +=new UpdaterActionEventHandler(ChengXuXiaZaiKaiShi );
				gengXinKongZhi.FilesValidated +=new UpdaterActionEventHandler(ChengXuWenJianKeYiYunXing );
				gengXinKongZhi.UpdateAvailable +=new UpdaterActionEventHandler(ChengXuZuJianKeYiXiaZai );
				gengXinKongZhi.DownloadCompleted +=new UpdaterActionEventHandler(ChengXuXiaZaiWanCheng);
				gengXinKongZhi.FilesValidationFailed += new UpdaterActionEventHandler(gengXinKongZhi_FilesValidationFailed); 
				//MUAB启动
				this.gengXinXC =  new Thread(new ThreadStart(this.gengXinKongZhi.StartUpdater) );
				this.gengXinXC.Name="应用程序更新线程";
				gengXinXC.Start(); 
				//修改标识
				shifouGengXin = true;
			}
		}		

		/// <summary>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -