C# 获取方法';的类型参数时出错';无法从用法中推断

C# 获取方法';的类型参数时出错';无法从用法中推断,c#,C#,我目前正在尝试在异步任务中使用下面的方法,但当我尝试使用StartStatTask时,遇到了错误: public async Task printLabelEindcontroleAsync(LabelEindControleDto label) { await StartSTATask(() => { var config = new MapperConfiguration(cfg => cfg.Creat

我目前正在尝试在异步任务中使用下面的方法,但当我尝试使用StartStatTask时,遇到了错误:

public async Task printLabelEindcontroleAsync(LabelEindControleDto label)
        { 
            await StartSTATask(() => {

                var config = new MapperConfiguration(cfg => cfg.CreateMap<LabelEindControleDto, LabelEindcontrole>());
                var mapper = new Mapper(config);
                LabelEindcontrole labelEindcontrole = mapper.Map<LabelEindcontrole>(label);

                new SuplaconPrint.Queries.LabelEindcontrole(labelEindcontrole);
            });
        }
无法从用法推断方法“PrintService.StartStatTask(Func)”的类型参数。尝试显式指定类型参数

这是StartStatTask方法

private Task<T> StartSTATask<T>(Func<T> func)
        {
            var tcs = new TaskCompletionSource<T>();
            Thread thread = new Thread(() =>
            {
                try
                {
                    tcs.SetResult(func());
                }
                catch (Exception e1)
                {
                    tcs.SetException(e1);
                }
            });
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            return tcs.Task;
        }
private Task StartSTATask(Func-Func)
{
var tcs=new TaskCompletionSource();
线程线程=新线程(()=>
{
尝试
{
SetResult(func());
}
捕获(异常e1)
{
tcs.SetException(e1);
}
});
SetApartmentState(ApartmentState.STA);
thread.Start();
返回tcs.Task;
}
这就是我尝试使用StartStatTask的地方:

public async Task printLabelEindcontroleAsync(LabelEindControleDto label)
        { 
            await StartSTATask(() => {

                var config = new MapperConfiguration(cfg => cfg.CreateMap<LabelEindControleDto, LabelEindcontrole>());
                var mapper = new Mapper(config);
                LabelEindcontrole labelEindcontrole = mapper.Map<LabelEindcontrole>(label);

                new SuplaconPrint.Queries.LabelEindcontrole(labelEindcontrole);
            });
        }
公共异步任务printLabelEindcontroleAsync(LabelEindControleDto标签)
{ 
等待开始任务(()=>{
var config=new-MapperConfiguration(cfg=>cfg.CreateMap());
变量映射器=新映射器(配置);
LabelEindcontrole LabelEindcontrole=mapper.Map(label);
新的SuplaconPrint.Queries.LabeleInControle(LabeleInControle);
});
}
您没有返回任何内容。因此,它无法推断您希望如何在lambda中使用泛型参数和返回类型
StartSTATask

下面的方法可行,因为它可以推断类型,在本例中为
int

await StartSTATask(
        () =>
           {
              return 0; // example
           });
我猜您还需要一个没有泛型类型的变体(在这种情况下)

你什么也不退。因此,它无法推断您希望如何在lambda中使用泛型参数和返回类型
StartSTATask

下面的方法可行,因为它可以推断类型,在本例中为
int

await StartSTATask(
        () =>
           {
              return 0; // example
           });
我猜您还需要一个没有泛型类型的变体(在这种情况下)

wait StartSTATask(async()=>{…})?为了
等待
我们必须返回
任务
等待启动状态任务(async()=>{…})?为了等待
我们必须返回任务