Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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#_Xamarin.forms_Async Await_Windows Ce_.net Standard - Fatal编程技术网

C# 如何在不支持异步/等待的平台上使用共享代码库中的异步/等待

C# 如何在不支持异步/等待的平台上使用共享代码库中的异步/等待,c#,xamarin.forms,async-await,windows-ce,.net-standard,C#,Xamarin.forms,Async Await,Windows Ce,.net Standard,如何维护C#共享库代码库,该代码库可以但不必使用异步/等待逻辑,具体取决于目标平台 我正在构建.NET标准库,它将完成一些与异步逻辑(http调用)相关的业务任务。现在,我正在寻找一种解决方案,即拥有一个代码库并在以下各方之间共享: 表单(Android,可能是UWP) .NET Framework(WinForms) .NET CompactFramework(WinForms) 问题存在于最后一个根本不支持异步/等待的环境中。现在,我正在VS2008项目下重新编译库代码,并将文件添加为链

如何维护C#共享库代码库,该代码库可以但不必使用异步/等待逻辑,具体取决于目标平台

我正在构建.NET标准库,它将完成一些与异步逻辑(http调用)相关的业务任务。现在,我正在寻找一种解决方案,即拥有一个代码库并在以下各方之间共享:

  • 表单(Android,可能是UWP)
  • .NET Framework(WinForms)
  • .NET CompactFramework(WinForms)
问题存在于最后一个根本不支持异步/等待的环境中。现在,我正在VS2008项目下重新编译库代码,并将文件添加为链接。但由于结果代码基于预处理器,因此不易维护。通过使用#if指令,我可以启用和禁用异步/等待代码部分,并为编译准备代码

有没有其他解决方案来简化这种多平台代码

使用系统;
使用System.Collections.Generic;
使用系统文本;
#如果异步
使用System.Threading.Tasks;
#恩迪夫
命名空间SharedLibTest
{
公共接口IDbEventSource
{
#如果异步
任务执行资源(EventContext ctx);
#否则
DbEventResult ExecuteSource(EventContext ctx);
#恩迪夫
}
接口IEventStep
{
#如果异步
任务执行(EventContext ctx);
#否则
无效执行(EventContext ctx);
#恩迪夫
}
类EventStepDb:IEventStep
{
私有只读IDbEventSource_dbsrc;
公共事件步骤数据库(IDbEventSource dbsrc)
{
这._dbsrc=dbsrc;
}
#如果异步
公共异步任务执行(EventContext ctx)
#否则
public void Execute(EventContext ctx)
#恩迪夫
{
#如果异步
DbEventResult res=await_dbsrc.ExecuteSource(ctx);
#否则
DbEventResult res=_dbsrc.ExecuteSource(ctx);
#恩迪夫
ctx.State=res.答案;
}
}
}