winform客户端在登陆成功后会通过webservice来更新一个表的数据。我做了一个模式的进度条,进度条参考这个例子做的
http://www.csharpwin.com/csharpspace/10659r1860.shtml
现在我想在显示进度窗口后,第一步是检查网络连接情况(也就是与webservice是否连接)连接成功后在进行数据更新操作,怎么来实现检查数据,同时进度条要的显示要与数据更新同步呢?谢谢

解决方案 »

  1.   

        /// <summary>
        /// Increase process bar
        /// </summary>
        /// <param name="nValue">the value increased</param>
        /// <returns></returns>
        public bool Increase( int nValue )
        {
            if( nValue > 0 )
            {
                if( prcBar.Value + nValue < prcBar.Maximum )
                {
                    prcBar.Value += nValue;
                    return true;
                }
                else
                {
                    prcBar.Value = prcBar.Maximum;
                    this.Close();
                    return false;
                }
            }
            return false;
        }
    接着就是主窗体了,如何进行操作了,首先需要定义两个私有成员,一个委托。其中一个私有成员是保存当前进度条窗体对象,另一个是保存委托方法(即增加进度条尺度),具体如下:    private frmProcessBar myProcessBar = null;
        private delegate bool IncreaseHandle( int nValue );
        private IncreaseHandle myIncrease = null;接着要在主窗体中提供函数来打开进度条窗体,如下:
        /// <summary>
        /// Open process bar window
        /// </summary>
        private void ShowProcessBar()
        {
            myProcessBar = new frmProcessBar();        // Init increase event
            myIncrease = new IncreaseHandle( myProcessBar.Increase );
            myProcessBar.ShowDialog();
            myProcessBar = null;
        }
    那么现在就可以开始创建线程来运行,具体如下:    /// <summary>
        /// Sub thread function
        /// </summary>
        private void ThreadFun()
        {
            MethodInvoker mi = new MethodInvoker( ShowProcessBar );
            this.BeginInvoke( mi );        Thread.Sleep( 1000 );//Sleep a while to show window        bool blnIncreased = false;
            object objReturn = null;        do
            {
                Thread.Sleep( 50 );
                objReturn = this.Invoke( this.myIncrease, 
                    new object[]{ 2 } );
                blnIncreased = (bool)objReturn ;
            }
            while( blnIncreased );
        }       启动线程,可以如下: 
    Thread thdSub = new Thread( new ThreadStart( ThreadFun ) );
     thdSub.Start();上术方法我要在中音加一个检查网络的过程,网络畅通继续执行,否则进度调中止。怎样做,第一次做winform程序,大侠们帮帮忙。谢谢
      

  2.   

    可以把用户操作的信息保存在session中,设定一个过期时间,然后来做判断。
      

  3.   

    backgroundworker,配合进度条,msdn中有例程 。