相关疑难解决方法(0)

什么是.NET中的'闭包'?

什么是关闭?我们在.NET中有它们吗?


如果它们确实存在于.NET中,您能否提供一个代码片段(最好用C#)来解释它?


编辑:我浏览了Jon Skeet的文章,了解什么是闭包以及如何在.NET中使用它们.

.net closures

190
推荐指数
4
解决办法
4万
查看次数

TaskCompletionSource.SetResult()在哪种情况下同步运行continuation?

最初我认为所有延续都在线程池上执行(给定默认同步上下文).然而,当我使用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()立即同步调用延续?

c# multithreading asynchronous async-await

11
推荐指数
2
解决办法
1900
查看次数

CefSharp WpfControl 和渲染到图像

我们想要在 wpf 应用程序中的基于 chromium 的浏览器中显示网页。在浏览器中显示的网站也应该显示在另一个屏幕上,但没有交互。我想将 cefsharp wpf 浏览器控件和 cefsharp 离屏渲染结合起来。

我可以使用一个 chromium 实例来显示带有 wpf 交互的页面并将当前可见网站导出为图像吗?

感谢你并致以真诚的问候,

西蒙

cefsharp cefsharp.offscreen

2
推荐指数
1
解决办法
2386
查看次数