我正在重构一个由多个全尺寸应用程序使用的 C# 项目。此类与硬件交互,通常需要数百毫秒或更长时间来执行某些命令。在许多情况下,我用 ThreadPool 调用替换以前程序员编写的 Thread.Wait() 调用来执行这些操作。
现在,该项目向使用它的多个项目提供的某些功能需要数百毫秒或更长时间才能执行并向调用程序返回该程序必须使用的值。我的问题是,我是否可以在该项目中使用某种机制来使这些调用在主线程以外的某个线程上执行并返回?换句话说,从这个项目的角度来看,我想让这些方法成为非阻塞的,而不是要求使用这些函数的其他应用程序在单独的线程中进行调用。
谢谢
换句话说,从这个项目的角度来看,我想让这些方法成为非阻塞的,而不是要求使用这些函数的其他应用程序在单独的线程中进行调用。
一般来说,最好的方法通常是Task<T>在这种情况下返回 a 。这允许调用者在必要时进行阻塞,或者使用 newawait和async关键字来与您的库干净地协调,而不会阻塞或强制它们移动到单独的线程。