Tag: C#的

在C#中通过WebClient将JSON发布到URL

我有一些JavaScript代码,我需要转换为C#。 我的JavaScript代码将一些JSON POST到已创build的Web服务。 此JavaScript代码工作正常,如下所示: var vm = { k: "1", a: "2", c: "3", v: "4" }; $.ajax({ url: "http://www.mysite.com/1.0/service/action", type: "POST", data: JSON.stringify(vm), contentType: "application/json;charset=utf-8", success: action_Succeeded, error: action_Failed }); function action_Succeeded(r) { console.log(r); } function log_Failed(r1, r2, r3) { alert("fail"); } 我想弄清楚如何将其转换为C#。 我的应用程序正在使用.NET 2.0。 从我可以告诉我,我需要做的事情如下: using (WebClient client = new WebClient()) { string […]

我怎样才能把我的应用程序窗口放在前面?

如何把我的应用程序窗口放在前面? 例如我的应用程序需要注意。 这是我的个人计划。 我需要这个function。 这是我得到的。 但它不是 100%的工作。 public void BringToFrontToEnterCaptha() { if (InvokeRequired) { Invoke(new Action(BringToFrontToEnterCaptha)); } else { this.TopMost = true; this.Focus(); this.BringToFront(); this.textBox1.Focus(); this.textBox1.Text = string.Empty; System.Media.SystemSounds.Beep.Play(); } } public void BringToBackAfterEnterCaptha() { if (InvokeRequired) { Invoke(new Action(BringToBackAfterEnterCaptha)); } else { this.TopMost = false; } } 我从后台工作者那里打电话给他们。 BringToFrontToEnterCaptha(); while (!ready) { Thread.Sleep(100); } […]

为什么这个C ++ for循环的执行时间有显着的不同?

我正在经历循环,并发现访问循环的重大差异。 我无法理解在这两种情况下造成这种差异的原因是什么? 第一个例子: 执行时间处理时间; 8秒 for (int kk = 0; kk < 1000; kk++) { sum = 0; for (int i = 0; i < 1024; i++) for (int j = 0; j < 1024; j++) { sum += matrix[i][j]; } } 第二个例子: 执行时间:23秒 for (int kk = 0; kk < 1000; kk++) { sum […]

如何从WPF中的app.config获取List <string>值的集合?

以下示例使用从代码获取的BackupDirectories列表填充ItemsControl 。 我怎样才能改变这个,以便从app.config文件中获取相同的信息? XAML: <Window x:Class="TestReadMultipler2343.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid Margin="10"> <Grid.RowDefinitions> <RowDefinition Height="30"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="120"/> <ColumnDefinition Width="160"/> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="Title:"/> <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Title}"/> <TextBlock Grid.Row="1" Grid.Column="0" Text="Backup Directories:"/> <ItemsControl Grid.Row="1" Grid.Column="1" ItemsSource="{Binding BackupDirectories}"/> </Grid> </Window> 后台代码: using System.Collections.Generic; using System.Windows; using System.Configuration; using System.ComponentModel; […]

Windows Phone 8上的UDP多播组

好吧,这是我一直想弄明白的一个日子。 我们在Windows Phone 7上有一个应用程序,在这个应用程序中,电话join一个多播组,然后向该组发送和接收消息以相互交谈。 请注意 – 这是电话通话。 现在我试图将这个应用程序移植到Windows Phone 8上 – 使用Visual Studio 2012中的“转换为电话8”function – 到目前为止这么好。 直到我尝试testing手机通讯。 手机似乎join了组,他们发送数据包OK。 他们甚至收到他们发给群组的消息 – 但是,任何手机都不会收到来自另一个手机的消息。 以下是我的页面后面的示例代码: // Constructor public MainPage() { InitializeComponent(); } // The address of the multicast group to join. // Must be in the range from 224.0.0.0 to 239.255.255.255 private const string GROUP_ADDRESS = "224.0.1.1"; // […]

Java线程通过JNI从本地线程callback时泄漏

简介:当从本地创build的线程上的本机代码调用回Java时,我看到Java线程泄漏。 (更新2014年2月11日:我们提出了这个问题作为Oracle的支持请求,现在已经被Oracle 确认在Java 7更新45上。它只影响64位Linux(也可能是Mac)平台:32位Linux不受影响) 。 (2014年4月29日更新:甲骨文已经解决了这个问题,并将在Java 7更新80中发布)。 我有一个由Java层和本地库组成的应用程序。 Java层通过JNI调用本地库:然后这会导致一个新的本地线程开始运行,这将调用回Java。 因为新的本地线程没有连接到JVM,所以在进行callback之前需要先连接,然后再分离。 通常的做法似乎是用AttachCurrentThread / DetachCurrentThread调用来callbackJava的代码。 这个工作正常,但是对于我们的应用程序(这个应用程序非常频繁地调用Java),每次附加和分离的开销都很大。 在几个地方(像这里和这里 )描述的优化build议使用基于线程本地存储的机制来消除这个问题:基本上每次触发本地callback时,testing线程是否已经连接到JVM:如果没有,则将其附加到JVM,并使用线程本地存储机制在线程退出时自动分离该线程。 我已经实现了这一点,但是虽然附件和分离似乎正确地发生,这导致在Java端的线程泄漏。 我相信我正在做的一切正在努力,看看可能是错的。 有一段时间我一直在抨击我的头脑,我会非常感激任何见解。 我用缩减的forms重新创build了这个问题。 以下是本地图层的代码。 我们这里有一个封装器,它封装了返回当前线程的JNIEnv指针的过程,使用POSIX线程本地存储机制自动分离线程,如果它尚未连接。 有一个callback类用作Javacallback方法的代理。 (为了消除创build和删除与Java对象相关的全局对象引用的额外复杂性,我已经使用了对静态Java方法的callback,这与这个问题无关)。 最后有一个JNI方法,当被调用时,构造一个callback,并创build一个新的本地线程,并等待它完成。 这个新创build的线程调用一次callback然后退出。 #include <jni.h> #include <iostream> #include <pthread.h> using namespace std; /// Class to automatically handle getting thread-specific JNIEnv instance, /// and detaching it when no longer required class JEnvWrapper { […]

GoogleTest vs CppUnit:事实

在为未来几年设置C ++unit testing框架的过程中,我们将GoogleTest和CppUnit列入了名单。 我有两个经验,我的重点是GoogleTest。 无论如何说服我的老板,我需要一些事实,所以我做了一些在互联网上阅读,包括手册,维基页面和一些来源。 我想出了一个GoogleTest优势列表和一个CppUnit优势(graphicstesting运行者)。 在这里,他们按照感知的有用性sorting: INSTANTIATE_TEST_CASE_P用任何你想要的参数来实例化一个testing用例,包括笛卡尔积 FRIEND_TESTtesting私人类成员(所有的遗留代码) 把断言变成断点 非致命的断言 “开箱即用”googlemock整合 自动testing检测,不需要枚举它们 testing可以被禁用和启用 可以使用名称模式来select要运行的testing 值/types参数化testing 用户定义的谓词断言 死亡testing 断言更为丰富 键入断言 断言子程序 可以使用<<将更多的debugging信息添加到断言 RecordProperty将最后一个属性值发送到XML输出 SCOPED_TRACE有助于理解来自子例程或循环内部的断言失败的上下文。 xUnit XML输出,可以由Jenkins马上显示,而不需要XSLT转换 支持自定义types打印机 testing指示消耗的时间(我怀疑CppUnit也可以这样做,但我还没有想到) testing事件监听器API(用户定义的插件) testing洗牌 没有例外和RTTI 我是否正确地认为CppUnit不支持上述所有内容? CppUnit中有没有有用的GoogleTestfunction? 最后但并非最不重要的一点是:GoogleTest有什么好的CppUnitfunction? 谢谢!

函数调用是现代平台的有效内存屏障吗?

在我回顾的代码库中,我find了下面的习语。 void notify(struct actor_t act) { write(act.pipe, "M", 1); } // thread A sending data to thread B void send(byte *data) { global.data = data; notify(threadB); } // in thread B event loop read(this.sock, &cmd, 1); switch (cmd) { case 'M': use_data(global.data);break; … } “拿着它”,我对作者说,我的团队的一个高级成员,“这里没有内存障碍!你不能保证global.data将从caching刷新到主内存。如果线程A和线程B将运行在两个不同的处理器上 – 这种scheme可能会失败“。 高级程序员咧嘴一笑,缓缓地解释道,仿佛在解释他的五岁男孩怎样系鞋带:“听小男孩,我们在这里看到很多与线程相关的bug,在高负载testing和真实客户端”,他他暂停了一下他那长长的胡须,“但是我们从来没有这个成语的错误”。 “但是,它在书中说…” “挺!”,他立刻给我安静了一下, “从理论上讲,并不能保证,在实践中,你使用函数调用的实际上是一个内存屏障,编译器不会重新排列指令global.data = data ,因为它不知道是否有人在函数中使用它调用,而x86架构将确保其他CPU将在线程B从pipe道读取命令的时候看到这段全局数据。请放心,我们有充足的现实世界问题需要担心,我们不需要在假的理论问题上投入额外的努力。 放心吧,我的孩子,你会明白的,将真正的问题从我需要的博士学位分开来解决。“ […]

鸭编入C#编译器

注意:这不是一个关于如何在C#中实现或模拟鸭子打字的问题。 几年来,我的印象是某些C#语言特性在语言本身定义的数据结构上是压缩的(对我来说,这总是看起来像一个奇怪的鸡鸡蛋)。 例如,我的印象是, foreach循环只能用于实现IEnumerabletypes。 从那时起我就开始理解C#编译器使用鸭子打字来确定一个对象是否可以在foreach循环中使用,寻找一个GetEnumerator方法而不是IEnumerable 。 这消除了鸡蛋和鸡蛋的难题,这很有意义。 我有点困惑,为什么这不是似乎与using块和IDisposable的情况下。 编译器是否有任何特殊原因不能使用鸭子打字和查找Dispose方法? 这种不一致的原因是什么? 也许在IDisposable的背后还有其他的东西呢? 讨论为什么你有一个Dispose方法没有实现IDisposable的对象超出了这个问题的范围:)

使用string.format(不是padleft或padright)填充任意string左或右

我可以使用String.Format()填充任意字符的某个string吗? Console.WriteLine("->{0,18}<-", "hello"); Console.WriteLine("->{0,-18}<-", "hello"); returns -> hello<- ->hello <- 我现在想要的空间是一个任意的字符。 我不能用padLeft或padRight做的原因是因为我想能够在不同的地方/时间构造格式string,然后格式化被实际执行。 – 编辑 – 看到似乎没有一个现有的解决scheme,我想到了这个问题( 之前思考编码的build议 ) –EDIT2– 我需要一些更复杂的场景,所以我select了Think Before Coding的第二个build议 [TestMethod] public void PaddedStringShouldPadLeft() { string result = string.Format(new PaddedStringFormatInfo(), "->{0:20:x} {1}<-", "Hello", "World"); string expected = "->xxxxxxxxxxxxxxxHello World<-"; Assert.AreEqual(result, expected); } [TestMethod] public void PaddedStringShouldPadRight() { string result = string.Format(new PaddedStringFormatInfo(), "->{0} […]