有趣的多线程编程(2)线程中的参数传递

本文介绍如何在C#中通过不同方式为线程传递参数,包括使用类属性、委托及线程池方法。提供了具体的代码示例,帮助理解线程启动与参数传递的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用类、类的方法或类的属性都可以向线程传递参数:public class UrlDownloader
{
    string url;

    public UrlDownloader (string url)
    {
        this.url = url;
    }

    public void Download()
    {        WebClient wc = new WebClient();        Console.WriteLine("Downloading " + url);                       
        byte[] buffer = wc.DownloadData (url);
        string download = Encoding.ASCII.GetString(buffer);
        Console.WriteLine(download);
        Console.WriteLine("Download successful.");
        //这里你可以将download进行保存等处理......
    }
}

[... 在另一个类中使用它们...]
             
UrlDownloader downloader = new UrlDownloader (yourUrl);
new Thread (new ThreadStart (downloader.Download)).Start();

注意参数是如何传递的。
在.NET 2.0中还可以这样:
(CODE-BESIDE)方式一:
ThreadStart starter = delegate { Download(yourUrl); });
new Thread(starter).Start();//使用线程池
WaitCallback callback = delegate (object state) { Download ((string)state); };
ThreadPool.QueueUserWorkItem (callback, yourUrl);

方式二(使用ParameterizedThreadStart):
Thread t = new Thread (new ParameterizedThreadStart(DownloadUrl));
t.Start (myUrl);

static void DownloadUrl(object url)
{
    // ....}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值