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

c# – BackgroundWorker – 调用线程无法访问对象【代码】

所以在我的DoWork中,我有List<KeyValuePair<String, BitmapImage>> Files = new List<KeyValuePair<string,BitmapImage>>((List<KeyValuePair<String, BitmapImage>>)e.Argument);foreach (KeyValuePair<String, BitmapImage> i in Files) {string temp = i.ToString(); .......(1)//..... }我将论点传递如下: – backgroundWorkerForReupload.RunWorkerAsync(files);其中“files”属于Type List< KeyValuePair< st...

c# – 实现跨线程调用检查【代码】

我需要检查一个方法是从实例化类的同一个线程调用的,类似于WinForms控件实现的功能. 怎么能实现这个?以下示例是否有效?public class Foo {int ManagedThreadId; public Foo(){ManagedThreadId=Thread.CurrentThread.ManagedThreadId;}public void FooMethod(){if (ManagedThreadId!=Thread.CurrentThread.ManagedThreadId)throw new InvalidOperationException("Foo accessed from a thread other than the thread it was creat...

c# – 如何使用Microsoft Shims检测DAMP方法调用【代码】

我遇到了以下写一些单元测试的问题.我想测试是否在SUT中调用了类的方法.我使用Microsoft Shims,因为该方法属于一个没有实现任何接口的类(Stubs不能使用).填充程序拦截方法调用并将变量设置为true为lambda.变量在lambda之外定义,但在相同的范围内,因此捕获变量.当我尝试使用具有描述性名称的函数将代码重构为DAMP(描述性和有意义的短语)来包装填充程序创建,以及lambda时,问题就出现了.我被迫将变量传递给函数,然后让lambda捕获它,但...

c# – 使用MOQ验证自己调用了哪个方法?【代码】

我正在测试的对象将根据某些内容调用其他方法. 即class ToTest {public void A(MyObject o) {if (some_condition)this.B(o);else this.C(o);}public void B(MyObject o) { ... }public void C(MyObject o) { ... } }如何验证方法B()是否被调用?解决方法:如果B和C不是虚拟的,那么你将无法使用Moq直接验证这些方法,因为它们与A紧密耦合. 但是,您可以间接验证分支,例如,如果B和C对Object o执行不同的操作,那么您可以检测到这一点,或者...

如何从C#中的Action委托中调用非静态方法【代码】

由于我正在为要执行的某个操作编写通用概念,因此我需要在Action委托中调用一些非静态方法.而且,我的代码中没有一个是静态的.但是我仍然不能在Action定义中调用非静态方法.这是我的代码 – private Dictionary<string, Action<object>> m_dicUndoRedoAction = new Dictionary<string, Action<object>>(); m_dicUndoRedoAction.Add("DeleteClass", DeleteClassFromeNode );这是DeleteClass的定义private Action<object> DeleteClassF...

c# – 如何将具有struct约束的方法调用到未知结构【代码】

问题很简单:我正在使用反射来获得一个值.然后,如果它是一个结构,我正在调用方法FooStruct,否则FooClass:Type type = x.GetType(); foreach (var fieldInfo in type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) {var val = fieldInfo.GetValue(value);object obj = type.IsValueType ? val.FooStruct() : val.FooClass();fieldInfo.SetValue(x, obj); }问题是FooStruct有一个约束:public...

c# – 除了使用P / Invoke之外,我如何在hBitmap上调用DeleteObject()?【代码】

我正在处理类似这样的代码(从here开始)using (var bmp = new System.Drawing.Bitmap(1000, 1000)) {IntPtr hBitmap = bmp.GetHbitmap(); var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty,System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); }和MSDN说每当我调用Bitmap.GetHbitmap()时,我必须在hBitmap上调用DeleteObject()来释放非托管资源...

c# – 单元测试使用异步调用的MassTransit消费者【代码】

我们正在使用MassTransit异步消息传递(在RabbitMQ之上)来实现我们的微服务架构. 我们遇到了测试消费者的问题,而这些消费者又会进 下面的示例显示了一个简单的MassTransit使用者,它使用RestSharp进行出站调用并使用ExecuteAsync异步方法.public class VerifyPhoneNumberConsumer : Consumes<VerifyPhoneNumber>.Context {IRestClient _restClient;RestRequest _request;PhoneNumber _phoneNumber;PhoneNumberVerificationResponse _...

c# – 为什么Control.Invoke()调用PostMessage()而不是SendMessage()?

Control.Invoke()调用PostMessage()然后等待,直到UI线程完成处理消息.那么为什么它不调用SendMessage()(默认情况下等待UI线程完成处理消息).解决方法:Control.Invoke()是一种危险的方法,许多.NET程序员用它来阻塞程序.因此,应该非常强烈地避免它.简单的日常操作,如关闭窗户变得危险.您将要等到工作线程无法再调用,因为当线程继续运行但UI消失时,没有任何好处发生.因此,您使用AutoResetEvent向线程发出信号并等待它完成. 当线程在错...

c# – 无法调用SystemParametersInfo【代码】

最近我一直试图从托管代码调用SystemParametersInfo方法,但没有任何成功. 问题是,在调用方法之后,该方法返回false(表示失败),但是GetLastError(由Marshal.GetLastWin32Error()检索)为0. 我试图从C调用该方法作为测试(具有完全相同的参数),并且从那里完全正常工作. 方法的P / Invoke声明是这样的:[DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool SystemPara...

c# – 调用从封闭泛型继承的methodinfo【代码】

private static void Main(string[] args){var messageType = typeof (SampleHandler1);var genericType = typeof (IConsume<>).MakeGenericType(messageType);var genericArguments = genericType.GetGenericArguments();var consumeMethod = genericType.GetMethod("Consume");var constructorInfo = genericArguments[0].GetConstructor(Type.EmptyTypes);var classObject = constructorInfo.Invoke(new object[] {});var argsx...

如何使用循环在c#中调用具有不同名称的数组【代码】

我想将值分配给array1,array2,array3 ……. upto array60.right现在我正在使用以下代码,因为我不知道如何在一个循环中执行它,有没有办法更改数组名称在循环中.如何在一个循环中执行此操作?while (array[p] != " "){array1[p1] = array[p];p++;p1++;}while (array[p] != " "){array2[p2] = array[p];p++;p2++;}while (array[p] != " "){array3[p3] = array[p];p++;p3++;}while (array[p] != " "){array4[p4] = array[p];p++;p4++;}...

c# – 如何调用MVC动作来下载PDF文件?【代码】

我调用一个MVC动作,它创建一个内存PDF文件.我想在完成操作后立即返回文件并下载. 用于调用MVC操作的Ajax代码function convertToPDF() {$.ajax({url: "/Tracker/ConvertPathInfoToPDF",type: "GET",data: JSON.stringify({ 'pInfo': null }),dataType: "json",traditional: true,contentType: "application/json; charset=utf-8",success: function (data) {},error: function () {alert("Unable to call /Tracker/ConvertPathInfoT...

c# – 如何在MVC4中执行异步调用操作方法【代码】

我在这里有以下场景.如何在DB调用异步运行时进行一些并行处理./// <summary>/// Async query EF6.0/// </summary>/// <returns></returns>public async Task<ActionResult> AsyncQuery(){var result = await GetAsyncDepartments();Debug.WriteLine("Do some stuff here");return View("Index");}private async Task<List<Department>> GetAsyncDepartments(){var depts = new List<Department>();using (var newContext = new Dem...

c# – 为什么SecondChild类的重写方法没有被调用两次?【代码】

我不清楚为什么在Child类初始化时没有再次调用SecondChild类DoSomething.class Parent {public Parent(){DoSomething();}protected virtual void DoSomething(){Console.WriteLine("Parent Method");} }class Child : Parent {private string foo;public Child(){foo = "HELLO";}protected override void DoSomething(){Console.WriteLine(foo.ToLower());} }class SecondChild : Parent {public SecondChild(){var c = new Child...