线程里访问数据库,丢数据,重复记录
public void PrintSemiMLabel()
{
while (_isPrinting)
{
if (_printCount > 0)
{
try
{
object objTime = SqlHelper.ExecuteScalar("select getdate()");
if (objTime == null || objTime == DBNull.Value)
{
_isPrinting = false;
return;
}
DateTime time = Convert.ToDateTime(objTime);
//_printLabel.CreateDate = checkEdit1.Checked ? time : DateTime.Now;
//_printLabel.DOM = rgDOM.SelectedIndex == 0 ? time : deDOM.DateTime;
if (!SemiMSheetLabelHandler.Add(_printLabel))
{
_isPrinting = false;
return;
}
_labelPrint.PrintLabel();
}
catch (ArgumentException ex)
{
//XtraMessageBox.Show();
_isPrinting = false;
}
_printLabel.sheetNum++;
_printCount--;
if (_printCount == 0)
{
_isPrinting = false;
}
}
Thread.Sleep(_timeSpan * 1000);
}
}
这是个线程的方法,完成每隔_timeSpan * 1000时间保存并打印一次printLabel
正常情况下,保存和打印的流水号都是连续的,_printLabel.sheetNum++控制流水号
但是偶尔就会出现001,003,004的情形(数据库里没有002,也没有打印出002),暂叫跳打
也会出现001,001的情形,数据库里有两个001,打印也是两个001,重号
什么原因呢?这种现象不常见