c# – 我可以指定要等待延续完成后要保留的变量吗?

异步方法中,任何局部变量都将被存储掉,以便在等待之后的任何线程都可以访问这些值时.有什么办法来表明在等待之后真正需要哪些值?

例如:

var firstName = "Karl";
var lastName = "Anderson";
var street1 = "123 Nowhere Street";
var street2 = "Apt 1-A";
var city = "Beverly Hills";
var state = "California";
var zip = "90210";

await MyTaskHere();

Console.WriteLine(firstName);
Console.WriteLine(city);

所以我已经声明了7个局部变量,但是在等待之后才使用其中的2个变量,有没有任何属性可以装饰我的变量,以表示我打算在等待完成后只使用firstName和city?

注意:这是一个有创意的例子,但是如果下一个线程完成工作时,如果不需要可能的大型数据块的存储,似乎可能会有好处.

解决方法

你不能. (除了将它们分成单独的方法或将其设置为空的明显解决方案之外).

在这种情况下,编译器未完全优化;它可能会捕获比它需要的更多的变量,并且可能会持续更长的时间.这可能是Microsoft将来会优化的.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...