如何使此代码在已使用最后一项时选择数组中的下一项

本文关键字:一项 选择 数组 何使此 代码 最后 | 更新日期: 2023-09-27 17:59:01

当上一个项目已经使用时,如何让这段代码选择数组中的下一个项目
有了链接,它做得很好(看起来)。它只正确添加第一个文件名,其他文件名为"System.String[]"

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.IO;
    using System.Diagnostics;
    using System.ComponentModel;
    namespace J98_MP_CS
    {
        class Download
        {
            private static Queue<string> _items = new Queue<string>();
            static string dl_loc = "C:''ProgramData''jyrka98''";        
            public static void Start()
            {
                string[] file_link_array = { 
                                               "LINK1" 
                                               "LINK2"
                                           };       
                foreach (string i in file_link_array) { _items.Enqueue(i); }
                DownloadItem();
            }      
            private static void DownloadItem()
            {
                string[] file_name_array = { 
                                                  "xvm_main_files.zip",
                                                  "jyrka98_xvm.zip",
                                                  "premium_hangar.zip",
                                                  "J1mB0_crosshair.zip",
                                                  "J1mB0_contour_icons_v1.zip",
                                                  "J1mB0_contour_icons_v2.zip",
                                                  "multiline_tank_carousel.zip",
                                                  "white_dead_tanks.zip"
                                              };
                if (_items.Any())
                {
                    var nextItem = _items.Dequeue();
                    WebClient WC = new WebClient();
                    WC.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0");
                    WC.DownloadFileCompleted += new AsyncCompletedEventHandler(WC_DownloadFileCompleted);
                    WC.DownloadFileAsync(new Uri(nextItem), Path.Combine(dl_loc + file_name_array));
                    return;
                }
            }
            private static void WC_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
            {
                DownloadItem();   
            }
        }
    }

*注意:为了缩短代码,我在这里只放了两个链接,而不是8个。

如何使此代码在已使用最后一项时选择数组中的下一项

这有帮助吗?引入了一个类来保存链接和本地文件名。我想这就是你想要的。然后为每个链接/文件名组合排队一个条目。我宣布这个班在最前面,只是为了让大家团结起来。

    class LinkAndFileName
    {
        public LinkAndFileName(string initLink, string initFileName)
        {
            link = initLink;
            fileName = initFileName;
        }
        public string link { get; set; }
        public string fileName { get; set; }
    }

    private static Queue<LinkAndFileName> _items = new Queue<LinkAndFileName>();
    private static List<string> _results = new List<string>();
    static string dl_loc = "C:''ProgramData''jyrka98''";
    public static void Start()
        {
            LinkAndFileName[] file_link_array = new []
            {
                new LinkAndFileName("LINK1", "xvm_main_files.zip"),
                new LinkAndFileName("LINK2", "jyrka98_xvm.zip"),
                new LinkAndFileName("LINK3", "premium_hangar.zip"),
                new LinkAndFileName("LINK4", "J1mB0_crosshair.zip"),
                new LinkAndFileName("LINK5", "J1mB0_contour_icons_v1.zip"),
                new LinkAndFileName("LINK6", "J1mB0_contour_icons_v2.zip"),
                new LinkAndFileName("LINK7", "multiline_tank_carousel.zip"),
                new LinkAndFileName("LINK8", "white_dead_tanks.zip"),
            };
            foreach (LinkAndFileName fileLink in file_link_array) { _items.Enqueue(fileLink); }
            DownloadItem();
        }
    private static void DownloadItem()
    {
        if (_items.Any())
        {
            LinkAndFileName nextItem = _items.Dequeue();
            WebClient WC = new WebClient();
            WC.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0");
            WC.DownloadFileCompleted += new AsyncCompletedEventHandler(WC_DownloadFileCompleted);
            WC.DownloadFileAsync(new Uri(nextItem.link), Path.Combine(dl_loc + nextItem.fileName));
            return;
        }
    }
    private static void WC_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
    {
        DownloadItem();
    }