如何在通用应用程序中禁用任务并行库的ETW事件源?

任务并行库使用Windows事件跟踪(ETW)进行日志记录。 显然,在Windows Phone或Windows Store .NET Runtime下,存在与TPL或ETW中的日志记录相关的错误。 这里描述了原始问题。 一种可能的解决方法是禁用TPL的ETW EventSource 。 如果我真的想要如何在通用Windows应用程序中禁用它 ? reflection适用于桌面应用程序,但不适用于WP / WinRT应用程序。 EventCommand.Disable未被识别为EventSource.SendCommand的有效命令(尽管它在ETW内部使用)。 这是要使用的代码(作为控制台应用程序): using System; using System.Threading.Tasks; using System.Diagnostics.Tracing; using System.Reflection; namespace ConsoleApplication { class Program { internal class MyEventListener : EventListener { protected override void OnEventSourceCreated(EventSource eventSource) { Console.WriteLine(eventSource); base.OnEventSourceCreated(eventSource); if (eventSource.Name == “System.Threading.Tasks.TplEventSource”) { Console.WriteLine(“enabled: ” + eventSource.IsEnabled()); // […]

在C#中,什么是“is”关键字,但使用Type对象

我想这是一个简单的问题,但在Type类的文档中,他们只讨论了GetInterfaces方法中的接口。 即typeof(ChildClass).XXX(typeof(ParentClass)

获取DatagridviewComboBoxCell的SelectedIndex

我有一个Winforms应用程序,它有一个DataGridView 。 DataGridView未绑定到数据源。 我正在读取一个文本文件,根据文件中的每一行,我将每行的值放在datagrid中。 我的网格中有一个ComboBoxColumn 。 它有一系列的项目。 我的目标是将单元格中显示的项目的索引保存到文件中。 但是,似乎ComboBoxCell没有像ComboBox那样的SelectedIndex属性。 重要的是要提到我需要知道只有当用户点击“保存”选项时显示的项目的索引,所以我不相信editingControlShowing事件是我的方式去。

使标签多行

我知道简单的解决方案是使标签成为具有多线的文本框,但这并不能解决问题,因为我想在文本值中渲染锚标签。 例如: <asp:Label ID='myLabel' runat="server" Text=" This is my label etc… go here Here to update” /> 这不能通过使用文本框来完成,因为文本框不会将锚标记显示为链接,而是显示为纯文本

在调用新Action时帮助理解C#语法

我是c#的新手,并不了解调用新操作的语法,甚至不了解操作是什么。 根据我对Port1_DataReceived的理解,我必须创建一个动作,因为我正处于新的阶段……任何人都可以详细说明为什么我需要这样做? public Form1() { InitializeComponent(); SerialPort Port1 = new SerialPort(“COM11”, 57600, Parity.None, 8, StopBits.One); Port1.DataReceived += new SerialDataReceivedEventHandler(Port1_DataReceived); Port1.Open(); } private void Port1_DataReceived(object sender, SerialDataReceivedEventArgs e) { SerialPort Port = (SerialPort)sender; string Line = “”; int BytestoRead = Port.BytesToRead; Line = Port.ReadLine(); label1.Invoke(new Action(() => { label1.Text = Line; })); } 我真正理解的代码片段是: label1.Invoke(new Action(() […]

带事件通知的任务 – .net 4

昨天在SO上,我看到一个线程要求代码,其中一些是这样做的。 我的意思是,你(经理线程)使用TPL API启动任务数量,一旦完成作业,该线程应该通知你(经理)回到谁维护任务池。 所以这是我试过的代码。 虽然我必须说它的工作原理如上所述。 class TaskJob { public delegate void NotificationDelegate(int? taskId,string message); public event NotificationDelegate NotifyCompletion; public void TaskToRun() { try { if (Task.CurrentId == 4)//If its a 4th thread, simulate exception throw new Exception(); Console.WriteLine(“Task started with thread id ” + Task.CurrentId); Thread.Sleep(100000); Console.WriteLine(“Task finished with thread id ” + Task.CurrentId); NotifyCompletion(Task.CurrentId, […]

C#SendKeys.SendWait()并不总是有效

我正在尝试创建一个将密钥发送到外部应用程序的应用程序,在本例中为aerofly FS。 我之前已经使用了SendKeys.SendWait()方法,但是这一次,它并不像我想要的那样工作。 我想向应用程序发送一个“G”按键并用记事本测试它我得到G的。 但是在空中FS中根本没有收到任何东西。 按键盘上的G确实有效。 这是我的代码处理输入数据(来自Arduino)和发送击键, private void handleData(string curData) { if (curData == “1”) SendKeys.SendWait(“G”); else { } }

C#6:nameof()getter / setter中的当前属性

有没有办法在getter / setter中获取当前属性的名称? 像这样的东西: public string MyProperty { get { return base.Get(nameof(ThisProperty)); } set { base.Set(nameof(ThisProperty), value); } } (ThisProperty将返回“MyProperty”)。 谢谢!

C#在Canvas中拖放图像

我试图谷歌如何在canvas上拖放UIElements,但找不到我正在寻找的东西。 我有一个带有Window的C#WPF应用程序。 在窗口内我有一个Canvas,我可以在其中添加图像。 我想要的是能够拖放图像,同时保持在canvas的边界内。 我也希望它在代码中,所以不在xaml中。 我在我添加/更新图像到canvas的function中得到了这个。 TODO应该替换为拖放事件。 Image img = ImageList[i].Image; img.Name = “Image” + i; // TODO: Drag and Drop event for Image // TODO: Check if Left and Top are within Canvas (minus width / height of Image) Canvas.SetLeft(img, Left); // Default Left when adding the image = 0 Canvas.SetTop(img, Top); // Default […]

如何获取regsvr32工具注册的所有非托管dll的列表?

我使用regsvr32来注册和取消注册非托管DLL,以便在我的C#应用​​程序中使用它。 但是我没有在regsvr32工具中看到任何列出所有已注册DLL的参数,那么如何获得所有已注册DLL的列表呢?