我从这个链接复制下面的代码。但是当我编译这个代码时,我得到的入口点不能用'async'修饰符标记 。 我怎样才能使这个代码编译? class Program { static async void Main(string[] args) { Task<string> getWebPageTask = GetWebPageAsync("http://msdn.microsoft.com"); Debug.WriteLine("In startButton_Click before await"); string webText = await getWebPageTask; Debug.WriteLine("Characters received: " + webText.Length.ToString()); } private static async Task<string> GetWebPageAsync(string url) { // Start an async task. Task<string> getStringTask = (new HttpClient()).GetStringAsync(url); // Await the task. This is what […]
我一直在试图根据这篇文章呈现某个与状态和组件相关的模板 在我的项目下运行dev-server它一切正常,当我执行$state.go("home")组件模板加载我期望,但是当我在testing环境中这样做,这是行不通的。 在testing之前,当我使用“模板”而不是“组件”与ui-router一起使用“旧模式”时,执行$rootScope.$digest()就足以在<div ui-view></div>但使用这种新的方式,这不工作了。 我究竟做错了什么? 编辑 :我一直试图深入了解这个问题,我看到这个问题是与HTTP请求完成。 也许这与我的承诺使用async / awaitparsingcallback的方式有关。 请检查服务: 服务 export class TodoService { constructor($http, BASE_URL) { this.http = $http; this.url = `${BASE_URL}/todos` } async getTodos() { const apiResponse = await this.http.get(this.url) return apiResponse.data.todos } } 路由器 import '@uirouter/angularjs' export function routes($stateProvider, $locationProvider) { $locationProvider.html5Mode({ enabled: true, requireBase: false, rewriteLinks: true, }) $stateProvider […]
我有一个在.NET 4.0和VS2010中使用C#的.NET项目。 我想要做的是添加一些asynchronous重载到我的库,以使用.NET Framework 4.5中的用户使用await关键字更轻松地进行asynchronous编程。 现在被重载的方法是非asynchronous的。 另外我不想自己使用任何asynchronous方法,只是创build新的并使其可用。 在.NET 4.0和VS2010中创buildasynchronous方法是可能的,如果是这样,.NET 4.0asynchronous方法应该是什么样子? 因为我正在使用VS2010,所以我无法访问“async”关键字,因此需要在.NET 4.0中模拟这种行为。 例如,它是否需要返回任何特定的types,并且是否需要在该方法内部发生任何代码,以使它正在调用的当前非asynchronous代码asynchronous发生?
有没有在新的asynchronousdotnet 4.5库的方式来设置Task.WhenAll方法的超时。 我想获取几个来源,并在5秒后停止,并跳过未完成的来源。
我终于看到了asynchronous和等待关键字,这是我得到的,但所有我见过的例子调用.net框架中的asynchronous方法,例如这个调用HttpClient.GetStringAsync() 。 我不清楚的是这样一种方法,以及如何写我自己的“等待”的方法。 是不是像包装我想在任务中asynchronous运行的代码一样简单并返回?
我怎样才能推出我自己的asynchronous等待方法? 我发现在某些情况下编写asynchronous方法很容易: private async Task TestGeo() { Geolocator geo = new Geolocator(); Geoposition pos = await geo.GetGeopositionAsync(); double dLat = pos.Coordinate.Latitude; double dLong = pos.Coordinate.Latitude; } …但是,不幸的是,也可以看到,不是任何方法都可以做到asynchronous无聊, 机智:这不起作用: private async Task TestAsyncAwait() { int i = await TaSLs_Classes.TASLsUtils.GetZoomSettingForDistance(5); } 它阻止了我的编译错误,“不能等待int”; 在devise时间的一个提示同样告诉我,“types”int“不等于” 我也试过这个结果: Task<int> i = await TaSLs_Classes.TASLsUtils.GetZoomSettingForDistance(5); 我必须做些什么来使我的方法等待? UPDATE 作为中后卫和S. Cleary表示(与曾经在KNBR上的猫有任何关系?),这是有效的: int i = await […]
我正尝试在Azure托pipe的API Service中使用Azure MediaService API和Azure Storage API 。 用户将videostream作为HttpPost发送到服务,该服务将video作为Blob存储在我的存储帐户中,媒体服务对video进行编码,并且当video的链接准备就绪时,将其返回给用户。 但是,当我试图创build一个Asset System.NotSupportedException引发的消息: 抛出的exception:Microsoft.Data.Services.Client.dll中的“System.NotSupportedException”抛出exception:mscorlib.dll中的“System.NotSupportedException”iisexpress.exe错误:0:exception= System.NotSupportedException:此目标框架无法启用直接枚举数据服务查询。 这是因为枚举自动向数据服务发送同步请求。 由于此框架仅支持asynchronous操作,因此您必须调用BeginExecute和EndExecute方法来获取支持枚举的查询结果。 我正在使用以下版本的所需的依赖关系: Microsoft.Data.Services.Client – 5.6.2.0 Microsoft.WindowsAzure.MediaServices.Client – 3.0.0.8 Microsoft.WindowsAzure.Storage – 3.1.0.1 这是我的代码: CloudMediaContext _context; IAsset asset; using (MemoryStream Ms = new MemoryStream(data.Data)) { _context = new CloudMediaContext("accountName", "accountKey"); asset = await _context.Assets.CreateAsync("blobContainerName", AssetCreationOptions.None,CancellationToken.None); … … } data.Data包含video的byte[] 。 CreateAsync被调用时引发exception。 我试过_context.Assets.Create没有运气。 重要的编辑 我创build了一个新的控制台应用程序,使用了我在API服务中使用的代码,并成功执行了它。 […]
我想await BlockingCollection<T>.Take()asynchronous,所以我不阻塞线程。 寻找像这样的东西: var item = await blockingCollection.TakeAsync(); 我知道我可以这样做: var item = await Task.Run(() => blockingCollection.Take()); 但是这有点杀死了整个想法,因为ThreadPool另一个线程被阻塞了。 有没有其他的select?
asynchronous任务(Async / Await)在.Net 4.5中如何工作? 一些示例代码: private async Task<bool> TestFunction() { var x = await DoesSomethingExists(); var y = await DoesSomethingElseExists(); return y; } 第二await声明是立即执行还是在第一次await回报之后执行?
我想同时处理一个集合,但是我在执行时遇到了麻烦,所以我希望得到一些帮助。 如果我想在并行循环的lambda中调用C#中标记为asynchronous的方法,则会出现问题。 例如: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, async item => { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff } var count = bag.Count; 问题发生在count为0时,因为所有创build的线程都只是后台线程,并且Parallel.ForEach调用不会等待完成。 如果我删除了async关键字,方法如下所示: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, item => { // some pre stuff var responseTask = await GetData(item); responseTask.Wait(); var response […]