想大家请教个问题:关于多线程的……
我在下载文件的时候启动一个线程
Thread downthread=new Thread(new ThreadStart(Locdownfile));
downthread.Start();启动后
我想在Locdownfile()函数里面把下载文件信息显示在一个listview里面,最重要的是我现在要用一个Timer定时刷新这个listview;现在我提醒注意的问题是整个定时刷新过程要在下载过程中……我现在不能做的是不能让下载和定时同时启动并完成整个下载过程…… 

解决方案 »

  1.   

    刷新应该不用考虑吧,你加一条自然就会显示多一行
    如果是下载文件需要的时间较长的话,要开多一个线程来处理Thread scanThread = new Thread(new ThreadStart(u.ScanWebsites));public void ScanWebsites()
    {
    }
      

  2.   

    不会吧,我下载有速度显示的,不然我当然不会无故让他刷新listview……
    要是多开一个线程,你说如何控制他们的下载呢?平分一个文件的字节吗?在组合在一起,还是怎么的?你这个有思路吗?
      

  3.   

    using System;
    using System.Threading;
    namespace ConsoleApplication1
    {
    public class myEventArgs : System.EventArgs
    {
    public int nCount;
    public myEventArgs(int n)
        {
    nCount = n;
     }
    }
    public class DownloadFile
    {
    public delegate void devent( object sender , myEventArgs e );
    public event devent OnEvent;
    public void thread()
    {
    for( int i=0 ; i<100 ; i++ )
    {
    if( OnEvent != null )
    {
    System.Threading.Thread.Sleep(100);
    OnEvent( this , new myEventArgs(i) );
    }
    }
    }
    public DownloadFile()
    {}
    public void run()
    {
    System.Threading.Thread t = new Thread( new System.Threading.ThreadStart( thread ));
    t.Start(); }
    }
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    DownloadFile df = new DownloadFile();
    df.OnEvent += new ConsoleApplication1.DownloadFile.devent(df_OnEvent);
    df.run();
    } private static void df_OnEvent(object sender, myEventArgs e)
    {
    Console.WriteLine( e.nCount.ToString() + "%" );
    }
    }
    }