0

我正在使用 Visual C#2008 Express Edition 和 Express SQL 数据库。每次我构建我的解决方案时,都会收到类似上述错误。显然文件名发生了变化。每次我遇到调试点时,也会创建一个新文件。

我有一个存储过程,它从数据库表中获取每一行,每次主窗体初始化时它都会获取这些行并将它们添加到泛型列表中。如果不从表中插入或删除,每次我启动 Windows 应用程序时它都会获得不同数量的行。该错误与奇怪的数据检索问题同时开始发生。关于什么会导致这种情况的任何想法?

谢谢

何塞,

当然,这是我的 c# 方法,它检索表中的每一行,每一行都有一个 int 和 Image ....

    private List<ImageNumber> GetListOfKnownImagesAndNumbers()
    {
        //ImageNumber imNum = new ImageNumber();

        SqlCommand sqlCommand = new SqlCommand();
        sqlCommand.Connection = _conn;

        try
        {
            MemoryStream ms = new MemoryStream();

            sqlCommand.CommandText = "usp_GetKnownImagesAndValues";

            _conn.Open();
            using (IDataReader dr = sqlCommand.ExecuteReader())
            {
                while (dr.Read())
                {
                    ImageNumber imNum = new ImageNumber();
                    imNum.Value = dr.IsDBNull(dr.GetOrdinal("ImageValue")) ? 0 : Convert.ToInt32(dr["ImageValue"]);

                    //Turn the bitmap into a byte array
                    byte[] barrImg = (byte[])dr["ImageCaptured"];
                    string strfn = Convert.ToString(DateTime.Now.ToFileTime());
                    FileStream fs = new FileStream(strfn,
                                      FileMode.CreateNew, FileAccess.Write);
                    fs.Write(barrImg, 0, barrImg.Length);
                    fs.Flush();
                    fs.Close();
                    imNum.Image = (Bitmap)Image.FromFile(strfn);

                    _listOfNumbers.Add(imNum);
                }
                dr.Close();
                _conn.Close();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            _conn.Close();
        }

        return _listOfNumbers;

    }

这是我的存储过程....

更改程序 dbo.usp_GetKnownImagesAndValues 开始

select  ImageCaptured, ImageValue
from CapturedImages

结尾

4

1 回答 1

1

谢谢你看这个。最后的答案是将 Thread.Sleep 放在 while 循环中,它开始完美地工作。我可能还有其他事情可以做,我显然在等待完成某些事情,这就是为什么在这里允许更多时间有所帮助的原因。如果我知道需要完成什么以及如何检测它何时完成,那么我可以检查它而不是简单地等待一小段时间。

于 2009-05-12T19:35:40.657 回答