【从C#进行P / Invoke调用时,异步过程调用如何处理已封送的委托?】教程文章相关的互联网学习教程文章

c# – 在async / await中调用异步方法和TaskScheduler【代码】

请考虑以下代码async Task<int> foo() {await Task.Delay(1000);return 42; }... // OPTION 1Task t = Task.Factory.StartNew(foo,CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);t.Wait();... // OPTION 2 Task t = foo(); t.Wait()问题 >两个通话选项之间的实质区别是什么?>在选项1中.假设我覆盖默认的TaskScheduler.等待foo方法 – 将使用哪个TaskScheduler?它会使用默认值还是参数传...

c# – 在Func <>调用中检查除零【代码】

我试图用动态数学运算符处理二维数组. 这是有问题的方法:public float[,] Calculate(int[,] a, int[,] b, Func<int,int,float> compute) {int columns = a.GetLength(0);int rows = a.GetLength(1);float[,] result = new float[columns,rows];for(int i = 0; i < columns; i++){for(int j = 0; j < rows; j++){result[i,j] = compute(a[i,j], b[i,j]); }}return result; }这个方法被调用如下:int[,] a = new int[2,3] { {2...

c# – 在BeginInvoke()中调用异步方法会产生一个’新’线程吗?【代码】

线程池中的“新”含义. 鉴于以下示例,我的假设是: >主方法在一个线程上执行(例如,线程1)> BeginInvoke使用池中的可用线程来执行AsyncDemo.TestMethod(线程2)>异步方法调用,例如WebClient.UploadStringAsync使用另一个可用线程(线程3) 第三个是我的问题源于的地方,WebClient.UploadStringAsync的定义:将指定的字符串上传到指定的资源.这些方法不会阻止调用线程. 这是否意味着它使用池中的另一个可用线程?这是一种不明智的技术(异...

c# – 如何在调用NormalizeWhitespace方法时阻止Lambda块语句中的新行【代码】

我有以下代码..var tree = CSharpSyntaxTree.ParseText(@"Func<string, string> parser = value =>{return string.Format(""Hello {0}"", value);}; ");var root = (CompilationUnitSyntax)tree.GetRoot(); var result = root.NormalizeWhitespace().GetText().ToString();在打印输出时,NormalizeWhitespace方法将分号推送到新行.反正我们可以阻止这个吗? 此外,是否可以将分号移近花括号. 感谢您的帮助.解决方法:因为字符串文字总...

c# – 在ExceptionFilter之前调用Controller.OnException吗?【代码】

试着在这里理解MVC管道: 似乎订单是这样的: > AuthorizationFilters> OnActionExecuting> ActionExecutes> OnActionExecuted> OnResultExecuting>创建操作结果> OnResultExecuted>写入响应流 Controller.OnException何时相对于ExceptionFilterAttribute.OnException运行?解决方法:它可能记录在某个地方,至少在源头,但我刚刚进行了这个小实验:// in MyHandleErrorAttribute, globally configured public override void OnExcept...

从部分类c#调用Base实体构造函数【代码】

考虑以下情况, 我有DB First方法创建的实体,// auto-generated class public partial DBEntity : DBContext {public DBEntity (): base("name=DBEntity ") // gets connection string from api.config{} }我有时需要构建并传递连接字符串,所以我创建了这个,public partial class DBEntity {public DBEntity (String connectionString){if (string.IsNullOrEmpty(connectionString))new DBEntity ();elsebase(connectionString); /...

c# – 对WCF服务的多个并行调用比单个调用花费更长的时间【代码】

我正在测试WCF并发和实例化. 有wcf服务:public class Service1 : IService1 {public string GetData(int value){Thread.Sleep(1000);return string.Format("You entered: {0}", value);}}从我的表单应用程序中,我调用此服务方法.当我进行单个呼叫时,需要aprox:1秒,如预期的那样.private void single_Click(object sender, EventArgs e){using (var service = new Service1Client()){var sw = new Stopwatch();sw.Start();service...

c# – WinRT调用Flyout.ShowAt()async【代码】

我正在构建我自己的Flyout控件,列表选择在Windows Phone和Windows桌面上使用它.与ListPickerFlyout类不同,Flyout类没有用于显示弹出窗口的异步方法. 如何在弹出窗口关闭后调用ShowAt方法异步并返回所选值? 解: 可以使用TaskCompletionSource< T>来实现异步行为. (感谢AwaitableUI libary).还有什么困扰我的是我必须在构造函数中手动创建ListView.如果我可以使用XAML而只是分配一个模板,那将是很好的,但我没有找到一种有效的方法....

c# – 从不同的线程调用时,WCF双工回调方法永远不会执行【代码】

好的,我的机智已经结束了这件事.我有一个WCF双工服务.以下是架构的工作原理: >客户端打开与端点的连接并提供回调实现>该服务接受该请求并在其他线程上执行一些操作(可能是1秒可能是2分钟,这是我不使用异步操作的原因)>处理完成后,它会调用客户端的回调 问题是当服务调用回调时,似乎没有任何反应.没有错误,没有任何东西.经过进一步调查,我在服务器跟踪中发现了一个异常:The I/O operation has been aborted because of either a t...

c# – 获取被调用者的扩展方法名称【代码】

我已经构建了一个简单的ArgumentValidator类,以简化任何给定方法中的参数前置条件.它们中的大多数是空值或边界检查,经过几次后它变得相当繁琐if (arg == null ) throw new ArgumentNullException(nameof(arg));所以我想出了以下设置:public static class ArgumentValidator {public interface IArgument<T>{string ParamName { get; }T Value { get; }}private class Argument<T>: IArgument<T>{public Argument(T argument, stri...

c# – 调用Async WebAPI后,Control不会返回到等待的webClient【代码】

我们有一个Restful Client-Sever环境,我正在尝试调试我的代码,客户端代码如下所示:await Client.DoWork(Id);服务器代码如下所示:public virtual async Task<IActionResult> DoWork(long Id){return Ok();}请注意,客户端是该服务的webclient,它是从https://github.com/swagger-api/swagger-codegen代码自动生成的. 它永远不会返回的自动生成代码中的点如下所示:var response_ = await client_.SendAsync(request_,System.Net.Htt...

为什么HttpClient只允许异步调用? C#【代码】

显然HttpClient只允许Asnyc调用? 当然你可以像这样调用“.Result”:public ActionResult Index() {var someImportantData = httpClient.ReadAsStringAsync().Result; // Aparently I shouldn't do this according to the article.// or var someImportantData = Task.Run(() => Client.PostAsync()).Result;Return View( new MyViewModel(someImportantData)); }使它同步,但这显然是非常危险的,应该避免,因为它会导致死锁,如...

从F#调用C#静态方法【代码】

我在C#中有这个类: 使用System.Collections.Generic;namespace StrassGlassLib {public class Mesh{private List<Model.Node> _ns;private List<Model.Plate> _ps;public Mesh(){_ns = new List<Model.Node>();_ps = new List<Model.Plate>();}public List<Model.Node> Nodes => _ns;public List<Model.Plate> Plates => _ps;public void AddNode(Model.Node n){_ns.Add(n);}public void AddPlate(Model.Plate p){_ps.Add(p);}// ...

c# – 通过HTTP调用Azure功能150次导致异常【代码】

我在Azure上运行asp.net mvc Web App.在一个方法中,我对Azure Function Web API进行了几次HTTP调用.在此Azure函数中,我使用DbContext将新记录插入数据库.// Method in web application making http requests to azure function web api public async Task CreateRecords() {int amountOfCalls = 150;var allTasks = new List<Task<HttpResponseMessage>>();for (int i = 0; i < amountOfCalls; i++) {var task = HttpClientInstanc...

c# – 如果该序列不为空,则使用IEnumerable序列作为参数调用方法【代码】

我有方法Foo,它进行一些CPU密集型计算并返回IEnumerable< T>序列.如果该序列为空,我需要检查.如果没有,请使用该序列作为参数调用方法Bar. 我想到了三种方法…… >使用Any()检查序列是否为空.这是好的,如果序列真的是空的,大多数时候都是这种情况.但它会有可怕的性能,如果序列将包含一些元素,Foo将需要它们再次计算…>将序列转换为列表,检查该列表是否为空…并将其传递给Bar.这也有局限性.酒吧只需要前x个项目,所以Foo将做不必要的工...