当前位置: 首页 > 编程语言 > C#

C#中的异步属性分享

时间:2023-04-10 17:12:17 C#

C#中的异步属性在我的Windows8应用程序中,我有一个具有一些静态属性的全局类,例如:publicclassEnvironmentEx{publicstaticUserCurrentUser{get;放;}//和其他一些静态属性//注意这个你可以看到我想在项目的其他地方使用应用程序根文件夹,所以我将它设置为静态属性。在getter中,我需要确保根文件夹存在,否则创建它。但是CreateFolderAsync是一个异步方法,这里我需要一个同步操作。我试过GetResults()但它抛出InvalidOperationException。什么是正确的实施?(package.appmanifest已正确配置并实际创建文件夹。)好的解决方案:不要执行该属性。做一个异步方法。“嘿伙计们,我讨厌等待,我怎样才能让一切同步?”解决方案:如何从C#中的同步方法调用异步方法?我建议你使用异步惰性初始化。publicstaticreadonlyAsyncLazyAppRootFolder=newAsyncLazy(()=>{returnKnownFolders.DocumentsLibrary.CreateFolderAsync("theApp",CreationCollisionOption.OpenIfExists).AsTask();});然后你可以直接等待它:varrootExFolder=await.EnvironmentAppRootFolder;使用await关键字publicasyncstaticStorageFolderGetAppRootFolder(){returnawaitApplicationData.LocalFolder.CreateFolderAsync("folderName");}并在您的代码中varmyRootFolder=awaitStaticClass.GetAppRootFolder();//这是一个同步调用,因为我们立即调用await并将返回StorageFolder。这是一个想法。publicTaskProp{get{Func>f=async()=>{awaitTask.Delay(1000);返回0;};返回f();}}privateasyncvoidTest(){awaitthis.Prop;但它会为每次调用创建一个新的Func对象publicTaskProp{get{returnTask.Delay(1000).ContinueWith((task)=>0);}}awaita.Prop=1;你不能等待一个集合awaita.Prop=1;不允许以上就是C#学习教程:C#中的异步属性的全部内容。如果对大家有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: