C#数组边界问题
private void tr_BindList()
{
if (!backgroundWorkerDGVRead.IsBusy)
{
dataGridView_Left.EndEdit();
StartBGW();
((W_MAIN)this.MdiParent).toolStripStatusLabelState.Text = "与服务器通信中..."; ; //서버와 통신중
PrevRow = 0;
string sysid = "";
string str_MATCOD = txt_MATCOD.Text.Trim();
string str_stoccd = cmb_stoccd.Text.Trim();
string str_iediv = cmb_iediv.Text.Trim();
string str_rtdiv = cmb_rtdiv.Text.Trim();
string str_infday = fdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss.sss");
string str_tnfday = tdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss.sss");
if (str_stoccd == "ALL")
{str_stoccd = "*";}
if (str_iediv == "ALL")
{ str_iediv = "*"; }
if (str_rtdiv == "ALL")
{ str_rtdiv = "*"; }
object[] oData = { -1, sysid,str_MATCOD,str_stoccd,str_iediv,str_rtdiv,str_infday,str_tnfday}
backgroundWorkerDGVRead.RunWorkerAsync(oData); //
}
}
private void ReadData(object sender, DoWorkEventArgs e) // gwg Retrieve(4)
{
int iRow = (int)((object[])e.Argument)[0];//0: -1왼쪽그리드, 0보다 큰수 메인 그리드 Row Index, 1: Sysid, 2: parentid, 3: Mode
string str_MATCOD = (string)((object[])e.Argument)[2];
string str_stoccd = (string)((object[])e.Argument)[3];
string str_iediv = (string)((object[])e.Argument)[4];
string str_rtdiv = (string)((object[])e.Argument)[5];
string str_infday = (string)((object[])e.Argument)[6];
string str_tnfday = (string)((object[])e.Argument)[7];
if (iRow.Equals(-1))// 왼쪽 그리드 str_infday, str_tnfday,
{
DataTable dt = service.get_wm1s01(str_MATCOD, str_stoccd,str_iediv,str_rtdiv,str_infday ,str_tnfday, UserInfo.DBINFO).Tables[0];
IsinitDGV = true;//DataGridView 초기화 시작
this.Invoke(new CallBackDGV(SetDGV_Clear), new object[] { dataGridView_Left });
for (int i = 0; i < dt.Rows.Count; i++)
{
try
{
if (backgroundWorkerDGVRead.CancellationPending)//BackgroundWorker 취소 메시지 발생 여부
{
e.Cancel = true;
break;
}
this.Invoke(new CallBackSetDGV(SetDGV_Left), new object[] { i, dt });
backgroundWorkerDGVRead.ReportProgress(PerCalculator(i, dt.Rows.Count));//프로세스바 증가 보고
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
-----------------------
DataTable dt = service.get_wm1s01(str_MATCOD, str_stoccd,str_iediv,str_rtdiv,str_infday ,str_tnfday, UserInfo.DBINFO).Tables[0];
运行到此时,显示异常:
System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Exception: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。
我查找了一下,数组对象没有问题。