我用VS2005做winform,用的是SQLHelper.cs类连接SQL 2000,在第一次可以获取到一个DataSet,退出后立刻再运行程序,却获取不到有数据,要等一段时间再运行才可以再获取到数据,但也不是每次都可以获取到数据,请问可以怎样解决。
PS:我是放在一个Thread线程里获取数据的。 private void Form1_Load(object sender, EventArgs e)
{
Thread getplaylist = new Thread(getPlayList_ThreadFlush);
getplaylist.IsBackground = true;
getplaylist.Start();
} private delegate void DelegateFunction(); private void getPlayList_ThreadFlush()
{
DelegateFunction DF = new DelegateFunction(getPlayList);
DF.BeginInvoke(null, null);
} private void getPlayList()
{
DataSet ds = null;
try
{
ds = Server.DAL.Form1_DAL.sqlGetPlayListDataSet();
string fileNameArr = "";
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
listBoxVideo.Items.Add(ds.Tables[0].Rows[i][0].ToString());
fileNameArr += ds.Tables[0].Rows[i][0].ToString() + "|";
}
fileNameArr = fileNameArr.Substring(0, fileNameArr.Length - 1);
PublicCS.PlayList = fileNameArr.Split('|');
}
MessageBox.Show(ds.Tables[0].Rows.Count.ToString() + "|" + fileNameArr);
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
ds = null;
MessageBox.Show("其他");
}有时连 MessageBox.Show("其他"); 也不会执行(生成的 *.exe最终程序的时候)。
PS:我是放在一个Thread线程里获取数据的。 private void Form1_Load(object sender, EventArgs e)
{
Thread getplaylist = new Thread(getPlayList_ThreadFlush);
getplaylist.IsBackground = true;
getplaylist.Start();
} private delegate void DelegateFunction(); private void getPlayList_ThreadFlush()
{
DelegateFunction DF = new DelegateFunction(getPlayList);
DF.BeginInvoke(null, null);
} private void getPlayList()
{
DataSet ds = null;
try
{
ds = Server.DAL.Form1_DAL.sqlGetPlayListDataSet();
string fileNameArr = "";
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
listBoxVideo.Items.Add(ds.Tables[0].Rows[i][0].ToString());
fileNameArr += ds.Tables[0].Rows[i][0].ToString() + "|";
}
fileNameArr = fileNameArr.Substring(0, fileNameArr.Length - 1);
PublicCS.PlayList = fileNameArr.Split('|');
}
MessageBox.Show(ds.Tables[0].Rows.Count.ToString() + "|" + fileNameArr);
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
ds = null;
MessageBox.Show("其他");
}有时连 MessageBox.Show("其他"); 也不会执行(生成的 *.exe最终程序的时候)。
解决方案 »
- C# 窗体全屏,各个控件如何相对应的全屏化,如何设计??
- 问一下关于Winform里读取文件的问题。
- 当初没选择MFC实在是个错误(关于窗口子类化的技术问题)
- 数据库查询语句
- C# vs2008 有人做出过虚拟镜象软件吗?
- 求救,如下c语言结构体,如何用C#实现?
- 关于IsPostBack
- ★★★★★★★★★★▲▲▲▲▲▲●●●●●■■■⒈⒉⒉◆●●★【怎样使文本框不能输入汉字?怎样使文本框不能输入汉字?怎样使文本框
- 我老觉得xp有内存泄露的情况,我机器3天不关机就要用了600多m的内存
- 各位大佬,netcore3.0到底支持不支持调用remoting接口啊,求救。
- 如何赋予一个combobox三个值?
- 求正则表达式
MessageBox.Show(ds.Tables[0].Rows.Count.ToString() + "|" + fileNameArr
把所有listboxvideo,messagebox以及所有windows控件都换成Console输出看看是否正确。
网上搜索invokerequired。
private void getPlayList()
{ }
里面的开始位置再设置一次 SqlConnection(connectionString),然后再执行以下的程序,就可以了。