首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

问个小疑点。各位帮忙解答一上

2012-08-31 
问个小问题。各位帮忙解答一下。这里有几万条数据,做一个winform窗体,在开始导入按钮里要做一个循环,插入到

问个小问题。各位帮忙解答一下。
这里有几万条数据,做一个winform窗体,在开始导入按钮里要做一个循环,插入到另一个网站里,
我试了一下,一点插入的时候程序直接就挂掉了。

所以想问一下各位。
我用TIMER控件。应该怎么控制。
我以前没用过TIMER控件。谢谢各位。
比如有一万条数据。我分100次,每次100条。SQL语句怎么写。

[解决办法]
用多线程处理,首先要处理大量数据必须放到除主线程外的其他工作线程中来处理,这样才能响应界面的点击、刷新、更新进度条等等。也就是说主线程是用来创建窗体、更新窗体等用户界面操作的。


C# code
using System;using System.Threading; public class Worker{    // 在线程启动时此方法将被调用    public void DoWork()    {        while (!_shouldStop) // 如果线程正在运行则打印信息        {            Console.WriteLine("worker thread: working...");        }        Console.WriteLine("worker thread: terminating gracefully.");}     public void RequestStop()    {        _shouldStop = true;    }    // Volatile这个关键字用来提醒编译器这个数据成员将被多线程访问    private volatile bool _shouldStop; // 应该停止} public class Program{    static void Main()    {        // 创建一个线程对象. 这里并不是线程的开始        Worker workerObject = new Worker();       // 这里定义一个新的线程,注意这里没有使用ThreadStart委托       // 另外构造函数接受的是对象的方法的名称        Thread workerThread = new Thread(workerObject.DoWork);        // 这里才是线程的真正开始        workerThread.Start();        Console.WriteLine("主线程: worker线程开始...");         // 循环直到线程被激活,Thread的IsAlive这个属性表示线程是否为活动的        while (!workerThread.IsAlive);         // 将主线程暂停1毫秒,以允许worker这个线程完成自己的工作        Thread.Sleep(1);         // 需要worker这个线程自动停止        workerObject.RequestStop(); // 使用Join这个方法来阻塞当前线程,直到对象的线程终止        workerThread.Join();        Console.WriteLine("main thread: Worker thread has terminated.");    }} 

热点排行