什么是关闭?我们在.NET中有它们吗?
如果它们确实存在于.NET中,您能否提供一个代码片段(最好用C#)来解释它?
编辑:我浏览了Jon Skeet的文章,了解什么是闭包以及如何在.NET中使用它们.
最初我认为所有延续都在线程池上执行(给定默认同步上下文).然而,当我使用a时,情况似乎并非如此TaskCompletionSource.
我的代码看起来像这样:
Task<int> Foo() {
_tcs = new TaskCompletionSource<int>();
return _tcs.Task;
}
async void Bar() {
Console.WriteLine(Thread.Current.ManagedThreadId);
Console.WriteLine($"{Thread.Current.ManagedThreadId} - {await Foo()}");
}
Run Code Online (Sandbox Code Playgroud)
Bar在一个特定的线程上被调用,并且在TaskCompletionSource一段时间内保持未设置状态,这意味着返回的任务IsComplete = false.然后一段时间后,同一个线程将继续调用_tcs.SetResult(x),根据我的理解,应该在线程池上运行continuation.
但是我在我的应用程序中观察到的是,运行continuation的线程实际上仍然是相同的线程,就好像在调用时一样同步调用continuation SetResult.
我甚至尝试SetResult在它上面设置一个断点并踩到它(并在延续中有一个断点),这反过来实际上继续同步调用延续.
什么时候SetResult()立即同步调用延续?
我们想要在 wpf 应用程序中的基于 chromium 的浏览器中显示网页。在浏览器中显示的网站也应该显示在另一个屏幕上,但没有交互。我想将 cefsharp wpf 浏览器控件和 cefsharp 离屏渲染结合起来。
我可以使用一个 chromium 实例来显示带有 wpf 交互的页面并将当前可见网站导出为图像吗?
感谢你并致以真诚的问候,
西蒙