c# – 我可以指定要等待延续完成后要保留的变量吗?
发布时间:2020-12-15 03:47:36 所属栏目:百科 来源:网络整理
导读:在异步方法中,任何局部变量都将被存储掉,以便在等待之后的任何线程都可以访问这些值时.有什么办法来表明在等待之后真正需要哪些值? 例如: var firstName = "Karl";var lastName = "Anderson";var street1 = "123 Nowhere Street";var street2 = "Apt 1-A";
在异步方法中,任何局部变量都将被存储掉,以便在等待之后的任何线程都可以访问这些值时.有什么办法来表明在等待之后真正需要哪些值?
例如: 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将来会优化的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |