C# 获取方法';的类型参数时出错';无法从用法中推断
我目前正在尝试在异步任务中使用下面的方法,但当我尝试使用StartStatTask时,遇到了错误:C# 获取方法';的类型参数时出错';无法从用法中推断,c#,C#,我目前正在尝试在异步任务中使用下面的方法,但当我尝试使用StartStatTask时,遇到了错误: public async Task printLabelEindcontroleAsync(LabelEindControleDto label) { await StartSTATask(() => { var config = new MapperConfiguration(cfg => cfg.Creat
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()=>{…})代码>?为了等待
我们必须返回任务