Tag: 异步

需要示例fire并忘记对WCF服务的异步调用

在预定的时间间隔,我需要调用WCF服务异步调用另一个WCF服务。 调度我已经解决的WCF服务调用。 我认为我需要和我在这里读到有关stackoverflow的信息,有必要……,(实质上)准备或更改WCF服务的代码,以便能够处理对它们的异步调用。 如果是这样的话,那个简单的例子是什么样的?(也许是前后的例子)在.Net 3.5中还有必要吗? 第二,我正在使用来自WCF服务的代理来调用下一个WCF服务,并且需要一个对WCF服务的异步调用示例,如果它看起来与使用典型异步示例的BeginEnvoke和EndEnvoke的典型不同。 如果我完全不在我的问题上,我会相信它,并且会感谢任何纠正以建立更好的问题。

Async / Await与WinForms ProgressBar

我已经使用BackgroundWorker在过去使用过这种类型的东西,但我想使用.NET 4.5的新异步/等待方法。 我可能正在咆哮错误的树。 请指教。 目标 :创建一个组件,该组件将执行一些长时间运行的工作,并在执行工作时显示带有进度条的模态表单。 该组件将获取窗口的句柄,以便在执行长时间运行的工作时阻止交互。 状态 :请参阅下面的代码。 在我尝试与windows进行交互之前,我认为自己做得很好。 如果我把事情单独处理(即不要触摸!),一切都“完美”运行,但是如果我点击任一窗口,那么程序会在长时间运行结束后挂起。 忽略实际交互(拖动),就像UI线程被阻止一样。 问题 :我的代码可以很容易修复吗? 如果是这样,怎么样? 或者,我应该使用不同的方法(例如BackgroundWorker)吗? 代码 (Form1是带有ProgressBar和公共方法的标准表单,UpdateProgress,用于设置ProgressBar的值): using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(“Starting..”); var mgr = new Manager(); mgr.GoAsync(); Console.WriteLine(“..Ended”); Console.ReadKey(); } } class Manager { private static […]

如何从rx订阅回调异步function?

我想在Rx订阅中回调一个异步函数。 就像这样: public class Consumer { private readonly Service _service = new Service(); public ReplaySubject Results = new ReplaySubject(); public void Trigger() { Observable.Timer(TimeSpan.FromMilliseconds(100)).Subscribe(async _ => await RunAsync()); } public Task RunAsync() { return _service.DoAsync(); } } public class Service { public async Task DoAsync() { return await Task.Run(() => Do()); } private static string […]

C#Threading / Async:在UI可交互的情况下在后台运行任务

在浏览Async / Await和Threading之后,我仍然不确定将它应用于我的情况的正确方法。 无论我尝试我的UI的变化仍然挂起,因为我似乎不是异步调用我想要的函数,另外,我可能实际上需要线程为我的解决方案。 我正在尝试做的事情:我有一个WPF应用程序,其中有一个按钮,我想开始一个操作,仍然允许通过UI或其他方式与程序交互。 一旦满足在此函数之外确定的条件,该函数应该结束。 对我来说,这听起来相当标准,但我有一种感觉,我误解了一些东西,我已经错误地实现了它。 我现在拥有的: private async void start_button_Click(object sender, RoutedEventArgs e) { await StaticClass.MyFunction(); } private void stop_button_Click(object sender, RoutedEventArgs e) { StaticClass.stopFlag = true; } public static Task myFunction() { //Stuff Happens while(StaticClass.stopFlag == false) //Do Stuff //Stuff Happens return Task.FromResult(1) //I know this is bad, part of the reason […]

“在此上下文中不允许异步操作”

我在调用他自动生成的异步webmethods时会得到以下exception,我在这篇文章中询问过 在此上下文中不允许异步操作。 启动异步操作的页面必须将Async属性设置为true,并且只能在之前的页面上启动异步操作 Google搜索结果在页面指令中添加了Async = True ,但是不同的人都注意到这会使页面“阻塞” (这不是真正的异步操作)。 那么我如何在调用webservice方法时实现异步操作。

MySQL C#异步方法不起作用?

我在服务器中有一个数据库,似乎异步方法不起作用。 这是我的代码: static async void Example() { string connectionString = “Server=mydomainname.com;” + “Port=3306;” + “Database=scratch;” + “Uid=Assassinbeast;” + “Password=mypass123;” + “AllowUserVariables= true;”; MySql.Data.MySqlClient.MySqlConnection sqConnection = new MySql.Data.MySqlClient.MySqlConnection(connectionString); await sqConnection.OpenAsync(); Console.Write(“Opened. Now Click to close”); Console.ReadLine(); sqConnection.Close(); } static void Main(string[] args) { Console.ReadLine(); Example(); Console.WriteLine(“Done”); Console.ReadLine(); } 在“await”语句中,它实际上应该跳回Main()函数并写出“Done”。 但它不这样做。 它只是同步运行,就像它不是异步方法一样,一旦function完全完成,它将首先写入“完成”。 那么我做错了什么? 这是一个错误吗? UPDATE 好的,所以在我得到一些答案后,我实际上仍然看不到OpenAsync()和Open()之间的任何区别。 我开始尝试测试更多的东西,我想我可以得出结论,异步方法不起作用 […]

如何在ASP.NET Web API中执行异步“即发即忘”操作

所以,我有这个Web API动作,它执行一个异步函数。 public void Post([FromBody]InsertRequest request) { InsertPostCommand.Execute(request); DoAsync(); } private async void DoAsync() { await Task.Run(() => { //do async stuff here }); } 我实际上希望控制器操作在执行异步操作时返回到客户端。 我这样做了,因此我得到一个例外: System.InvalidOperationException: An asynchronous module or handler completed while an asynchronous operation was still pending. 我怎么能实现这个呢? 谢谢

为异步执行排队操作/代理

框架中是否有某些东西允许我异步执行委托队列? 我的意思是我希望代表按照排队的顺序一次执行一个但我希望整个过程以异步方式运行。 队列也不固定,会定期添加其他委托,并且一旦到达队列顶部就应该处理。 我不需要特别使用Queue ,这就是我如何描述所需的行为。 我可以自己写一些东西去做,但如果有内置的东西,我可以使用,而不是更好。 我简要地查看了ThreadPool.QueueUserWorkItem因为它允许按顺序执行,但是可以找到一种令人满意的方法来防止一次执行多个执行。

你是否必须为异步方法调用调用EndInvoke(或定义一个回调),即使你返回时没有任何事情要做

我在CodeProject上发现了以下代码片段,它在异步调用方法… http://www.codeproject.com/Articles/14931/Asynchronous-Method-Invocation private void CallFooWithOutAndRefParameters() { // create the paramets to pass to the function string strParam1 = “Param1”; int intValue = 100; ArrayList list = new ArrayList(); list.Add(“Item1”); // create the delegate DelegateWithOutAndRefParameters delFoo = new DelegateWithOutAndRefParameters(FooWithOutAndRefParameters); // call the beginInvoke function! IAsyncResult tag = delFoo.BeginInvoke(strParam1, out intValue, ref list, null, null); // normally […]

WinRT:使用GetFileFromApplicationUriAsync()加载静态数据

我的Windows 8应用程序中有一些数据应该附带,只是一些静态数据。 实际上:它是一个简单的xml文件,应该反序列化。 数据保存在Assets \ data.xml中(Assets是Blank App Template中的默认文件夹)。 我正在使用这段代码来访问它: private static async Task Load() { if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { return new SampleData(); } var uri = new Uri(“ms-appx:///Assets/data.xml”); Debug.WriteLine(“Getting file from Application”); var file = await StorageFile.GetFileFromApplicationUriAsync(uri); Debug.WriteLine(“Opening file for reading async”); var stream = await file.OpenStreamForReadAsync(); var serializer = new XmlSerializer(typeof(MyObject)); Debug.WriteLine(“Begin deserialization”); var result […]