我有一个工控机之间的通讯服务和WinForm应用。它们在类的帮助下进行交互,类利用以下接口:
public interface IBaseIPC
{
Task<IPCConfig> GetConfig();
Task<IPCInfo> Activate(IPCConfig ipcConfig);
Task<IPCInfo> CancelActivation();
Task<IPCInfo> GetInfo();
Task<IPCInfo> Renew();
Task<string> TestConnection(IPCConfig ipcConfig);
}
当这些方法是同步的,它工作得很好。现在,当返回类型从IPCConfig切换到任务时,在程序集'mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089‘中有一个异常类型'System.Threading.Tasks.Task`1[IPCInfo’不会被标记为可序列化。我看到它试图序列化任务,但失败了。有办法解决这个问题吗?
发布于 2014-05-14 14:17:00
您会以什么二进制格式发送任务?这个问题没有合理的答案。因此,您不能发送任务。合乎道理?
如果IPC库或框架本质上不是异步的,则不能将任务返回给它。框架必须理解它们。
您可能在这里处理的是同步过异步场景。阅读并理解这个。你现在会意识到你的处境不太好。这两种情况都是最糟糕的:没有异步IO的好处和更多的CPU使用。
该怎么办呢?取决于你的申请。也许您根本不应该去异步(因为框架不支持它)。
https://stackoverflow.com/questions/23656908
复制相似问题