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