Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在混合匹配被调用的测试方法的同时对代码运行数小时的测试_C#_Testing_Console Application_Async Await - Fatal编程技术网

C# 如何在混合匹配被调用的测试方法的同时对代码运行数小时的测试

C# 如何在混合匹配被调用的测试方法的同时对代码运行数小时的测试,c#,testing,console-application,async-await,C#,Testing,Console Application,Async Await,我需要在一些代码上运行两个小时的测试。我使用了四种异步任务方法,而不是每次一次调用all,我希望一次调用两个,下一次调用一个,下一次调用所有四个,依此类推 不管调用哪一个,我只需要每次混合调用,而不是每次调用所有的方法 我需要知道如何设置一个计时器,以便在2小时后它将停止,并找到一种混合方法调用的方法 我正在寻找的代码将进入静态void Main(string[]args){} 基本上我需要某种类型的循环。 class Program { static void Main(string[

我需要在一些代码上运行两个小时的测试。我使用了四种异步任务方法,而不是每次一次调用all,我希望一次调用两个,下一次调用一个,下一次调用所有四个,依此类推

不管调用哪一个,我只需要每次混合调用,而不是每次调用所有的方法

我需要知道如何设置一个计时器,以便在2小时后它将停止,并找到一种混合方法调用的方法

我正在寻找的代码将进入
静态void Main(string[]args){}

基本上我需要某种类型的循环。

class Program
{
    static void Main(string[] args)
    {




    }

    static async Task Test1()
    {
        int[] elevIds = new int[] { 4440, 4441, 4442 };
        IElevation[] elevs = new IElevation[3];

        elevs = await Task.WhenAll(Enumerable.Range(0, elevs.Length).Select(i => AlumCloudPlans.Manager.GetElevationAsync(elevIds[i])));

        using (var pdf = await AlumCloudPlans.Manager.RollUpProjectPDFAsync(new Guid("da91dc34-fa29-4abd-bcc0-d04408310e3e"), elevs, true))
        {
            using (var ms = new MemoryStream()) { pdf.Save(ms, false); }
        }
    }
    static async Task Test2()
    {
        int[] elevIds = new int[] { 4430, 4431, 4434, 4435 };
        IElevation[] elevs = new IElevation[4];

        elevs = await Task.WhenAll(Enumerable.Range(0, elevs.Length).Select(i => AlumCloudPlans.Manager.GetElevationAsync(elevIds[i])));

        using (var pdf = await AlumCloudPlans.Manager.RollUpProjectPDFAsync(new Guid("da91dc34-fa29-4abd-bcc0-d04408310e3e"), elevs, true))
        {
            using (var ms = new MemoryStream()) { pdf.Save(ms, false); }
        }
    }
    static async Task Test3()
    {
        int[] elevIds = new int[] { 4427 };
        IElevation[] elevs = new IElevation[1];

        elevs = await Task.WhenAll(Enumerable.Range(0, elevs.Length).Select(i => AlumCloudPlans.Manager.GetElevationAsync(elevIds[i])));

        using (var pdf = await AlumCloudPlans.Manager.RollUpProjectPDFAsync(new Guid("da91dc34-fa29-4abd-bcc0-d04408310e3e"), elevs, true))
        {
            using (var ms = new MemoryStream()) { pdf.Save(ms, false); }
        }
    }
    static async Task Test4()
    {
        int[] elevIds = new int[] { 2282, 4309 };
        IElevation[] elevs = new IElevation[2];

        elevs = await Task.WhenAll(Enumerable.Range(0, elevs.Length).Select(i => AlumCloudPlans.Manager.GetElevationAsync(elevIds[i])));

        using (var pdf = await AlumCloudPlans.Manager.RollUpProjectPDFAsync(new Guid("da91dc34-fa29-4abd-bcc0-d04408310e3e"), elevs, true))
        {
            using (var ms = new MemoryStream()) { pdf.Save(ms, false); }
        }
    }

}

}

您可以创建一个与其签名匹配的
委托
,然后将其添加到该委托的列表中。然后使用
Random
确定该代理列表中有多少方法以及所述方法的索引,然后执行它们,并等待所有这些方法,然后再进入下一个随机确定的组。

以下是我最终实现的方法,效果非常好

    private async void Form1_Load(object sender, EventArgs e)
{
    await TaskProcessor();
}

async Task TaskProcessor()
{

   DateTime end = DateTime.Now.AddHours(4);
    while (end > DateTime.Now)
    {
        for (byte i = 0; i < 3; i++)
        {
            switch (i)
            {
                case 0:
                    await Test1();
                    break;
                case 1:
                    await Task.WhenAll(Test1(), Test2());
                    break;
                case 2:

                    await Task.WhenAll(Test1(), Test2(), Test3());
                    break;
                case 3:

                    await Task.WhenAll(Test1(), Test2(), Test3());
                    break;
            }
        }
    }
}

static async Task Test1()
{
    int[] elevIds = new int[] { 4440, 4441, 4442 };
    IElevation[] elevs = new IElevation[3];

    elevs = await Task.WhenAll(Enumerable.Range(0, elevs.Length).Select(i => AlumCloudPlans.Manager.GetElevationAsync(elevIds[i])));

    using (var pdf = await AlumCloudPlans.Manager.RollUpProjectImageAsync(new Guid("da91dc34-fa29-4abd-bcc0-d04408310e3e"), elevs, true))
    {
        //using (var ms = new MemoryStream()) { pdf.Save(ms, false); }
    }
}
static async Task Test2()
{
    int[] elevIds = new int[] { 4430, 4431 };
    IElevation[] elevs = new IElevation[2];

    elevs = await Task.WhenAll(Enumerable.Range(0, elevs.Length).Select(i => AlumCloudPlans.Manager.GetElevationAsync(elevIds[i])));

    using (var pdf = await AlumCloudPlans.Manager.RollUpProjectImageAsync(new Guid("da91dc34-fa29-4abd-bcc0-d04408310e3e"), elevs, true))
    {
        // using (var ms = new MemoryStream()) { pdf.Save(ms, false); }
    }
}
static async Task Test3()
{
    int[] elevIds = new int[] { 4427 };
    IElevation[] elevs = new IElevation[1];

    elevs = await Task.WhenAll(Enumerable.Range(0, elevs.Length).Select(i => AlumCloudPlans.Manager.GetElevationAsync(elevIds[i])));

    using (var pdf = await AlumCloudPlans.Manager.RollUpProjectImageAsync(new Guid("da91dc34-fa29-4abd-bcc0-d04408310e3e"), elevs, true))
    {
        // using (var ms = new MemoryStream()) { pdf.Save(ms, false); }
    }
}
private async void Form1\u加载(对象发送方,事件参数e)
{
等待TaskProcessor();
}
异步任务处理器()
{
DateTime end=DateTime.Now.AddHours(4);
while(end>DateTime.Now)
{
用于(字节i=0;i<3;i++)
{
开关(一)
{
案例0:
等待Test1();
打破
案例1:
wait Task.WhenAll(Test1(),Test2());
打破
案例2:
wait Task.WhenAll(Test1(),Test2(),Test3());
打破
案例3:
wait Task.WhenAll(Test1(),Test2(),Test3());
打破
}
}
}
}
静态异步任务Test1()
{
int[]elevIds=newint[]{444044414442};
IElevation[]elevs=新的IElevation[3];
elevs=wait Task.WhenAll(可枚举的.Range(0,elevs.Length).Select(i=>alumcloudplan.Manager.GetElevationAsync(elevIds[i]));
使用(var pdf=await AlumCloudPlans.Manager.rollupprojectmageasync(新Guid(“da91dc34-fa29-4abd-bcc0-d04408310e3e”)、elevs、true)
{
//使用(var ms=new MemoryStream()){pdf.Save(ms,false);}
}
}
静态异步任务Test2()
{
int[]elevIds=newint[]{44304431};
IElevation[]elevs=新的IElevation[2];
elevs=wait Task.WhenAll(可枚举的.Range(0,elevs.Length).Select(i=>alumcloudplan.Manager.GetElevationAsync(elevIds[i]));
使用(var pdf=await AlumCloudPlans.Manager.rollupprojectmageasync(新Guid(“da91dc34-fa29-4abd-bcc0-d04408310e3e”)、elevs、true)
{
//使用(var ms=new MemoryStream()){pdf.Save(ms,false);}
}
}
静态异步任务Test3()
{
int[]elevIds=新的int[]{4427};
IElevation[]elevs=新的IElevation[1];
elevs=wait Task.WhenAll(可枚举的.Range(0,elevs.Length).Select(i=>alumcloudplan.Manager.GetElevationAsync(elevIds[i]));
使用(var pdf=await AlumCloudPlans.Manager.rollupprojectmageasync(新Guid(“da91dc34-fa29-4abd-bcc0-d04408310e3e”)、elevs、true)
{
//使用(var ms=new MemoryStream()){pdf.Save(ms,false);}
}
}