Tag: .net

Parallel.ForEach没有启动新线程

Parallel.ForEach没有旋转新线程 大家好,我们有一个非常密集的IO操作,我们使用Microsoft的.NET Framework并行扩展中的Parallel.ForEach编写。 我们需要删除大量文件,并且我们将要删除的文件表示为列表列表。 每个嵌套列表中都有1000条消息,我们有50条这样的列表。 这里的问题是,当我查看后面的日志时,我只看到在Parallel.ForEach块内执行一个线程。 这是代码的样子: List<List> expiredMessagesLists = GetNestedListOfMessages(); foreach (List subList in expiredMessagesLists) { Parallel.ForEach(subList, msg => { try { Logger.LogEvent(TraceEventType.Information, “Purging Message {0} on Thread {1}”, msg.MessageID, msg.ExtensionID, Thread.CurrentThread.Name); DeleteMessageFiles(msg); } catch (Exception ex) { Logger.LogException(TraceEventType.Error, ex); } }); } 我用一个更简单的数据结构编写了一些示例代码,没有IO逻辑,我可以在Parallel.ForEach块中看到几个不同的线程。 我们在上面的代码中使用Parallel.ForEach做错了吗? 它可能是绊倒它的列表列表,还是IO操作存在某种线程限制?

.NET Interop IntPtr与ref

可能是一个菜鸟问题但是互操作不是我的优点之一。 除了限制重载次数之外,还有什么理由我应该声明我的DllImports: [DllImport(“user32.dll”)] public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam); 并像这样使用它们: IntPtr lParam = Marshal.AllocCoTaskMem(Marshal.SizeOf(formatrange)); Marshal.StructureToPtr(formatrange, lParam, false); int returnValue = User32.SendMessage(_RichTextBox.Handle, ApiConstants.EM_FORMATRANGE, wParam, lParam); Marshal.FreeCoTaskMem(lParam); 而不是创建目标重载: [DllImport(“user32.dll”)] public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref FORMATRANGE lParam); 使用它像: FORMATRANGE lParam = new FORMATRANGE(); int returnValue = […]

缺少C#中的’with’关键字

我今天正在查看Infragistics控件库的在线帮助,并看到一些VB代码使用With关键字在选项卡控件上设置多个属性。 自从我完成任何VB编程已经将近10年了,我几乎忘记了这个关键字甚至存在。 由于我还是比较新的C#,我很快就去看它是否有类似的结构。 可悲的是,我找不到任何东西。 C#是否有一个关键字或类似的构造来模仿VB中With关键字提供的function? 如果没有,是否有技术原因导致C#没有这个? 编辑:我在询问我的问题之前搜索了现有的条目,但没有找到Ray提到的那里( 这里 )。 那么,为了改进这个问题,有没有技术上的原因为什么C#没有这个? Gulzar将其钉住了 – 不,没有技术上的理由说明为什么C#没有With关键字。 这是语言设计师的设计决定。

使用CSharp / .net中的gmail SMTP发送邮件

using(SmtpClient client = new SmtpClient(“smtp.gmail.com”, 587)) { // Configure the client client.EnableSsl = true; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(textBox1.Text, textBox3.Text); client.DeliveryMethod = SmtpDeliveryMethod.Network; MailMessage message = new MailMessage( textBox1.Text, // From field textBox2.Text, // Recipient field textBox4.Text, // Subject of the email message richTextBox1.Text // Email message body ); client.Send(message); MessageBox.Show(“Email has been […]

我可以在ListView的详细模式下显示链接吗?

我在ListView显示一组搜索结果。 第一列包含搜索词,第二列显示匹配数。 有数万行,因此ListView处于虚拟模式。 我想改变它,以便第二列显示匹配作为超链接,就像LinkLabel显示链接一样; 当用户点击链接时,我希望收到一个事件,让我在我们的应用程序的其他地方打开匹配。 这是可能的,如果是的话,怎么样? 编辑:我认为我不够清楚 – 我想在一个列中有多个超链接,就像在一个LinkLabel可以有多个超链接一样。

如何检查隐式或显式转换是否存在?

我有一个generics类,我想强制类型参数的实例始终从String“cast-able”/ convertible。 没有例如使用接口可以做到这一点吗? 可能的实施: public class MyClass where T : IConvertibleFrom, new() { public T DoSomethingWith(string s) { // … } } 理想的实施: public class MyClass { public T DoSomethingWith(string s) { // CanBeConvertedFrom would return true if explicit or implicit cast exists if(!typeof(T).CanBeConvertedFrom(typeof(String)) { throw new Exception(); } // … } } 我更喜欢这种“理想”实现的原因主要是为了不强迫所有Ts实现IConvertibleFrom 。

是否有任何简单的方法可以按月/年/每日单位增加DateTime,而不必像疯了一样解析它?

我需要设置结算周期和处理付款。 因此,例如,我将立即处理付款,然后将下一个付款设置为从那时起一个月。 所以,如果我得到DateTime.Now有没有快速的方法只添加一个月? 一年怎么样? 或者我需要将其解析为MM,YYYY,DD,然后添加到MM,如果MM == 12增量年份等等…然后将它重新组合在一起,我的字符串将提交给此paypal插件? 这是所需的最终格式: “YYYY-MM-DDTHH:MM:SS.MSZ”. This is explained in more detail below: YYYY Four-digit year, eg “2005” MM Two-digit month. DD Two-digit day. T Indicates time follows the date. HH Hours in military time (24-hour format). MM Minutes SS Seconds MS Milliseconds Z 1-character (US military) representation of the time zone, […]

Linq中的SelectMany和维数组?

为什么这段代码编译: byte[][] my2DArray =new byte [][]{ new byte[] {1, 2}, new byte[] {3, 4}, }; var r = my2DArray.SelectMany(f=> f); 而这个不是: byte[,] my2DArray =new byte [2,2]{ {1, 2}, {3, 4}, }; var r = my2DArray.SelectMany(f=> f); 不是[][]是[,] ? 编辑 为什么我需要那个? 我需要创建一个单维数组,以便将其发送到GetArraySum 当然我可以创建重载,但我想将mutli dim转换成一个暗淡的。 ( GetArraySum也提供纯维数组)。 void Main() { byte[][] my2DArray =new byte [][]{ new byte[] […]

与ASP.NET的互操作’80040154类未注册’

我在运行IIS6的Windows XP Pro SP2 x64计算机上收到以下错误: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {3C250CBD-6CC9-11D2-9457-00004B48467E} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). 尝试实例化COM互操作对象时会发生这种情况。 奇怪的是,这可以在与应用程序池(AD中的用户)相同的帐户下运行的控制台应用程序中正常工作。 即两者都使用UserX,所以它似乎不是一个明显的权限问题。 其他人有类似的东西吗?

在Windows资源管理器中打开Windows 7库

如何从我的应用程序中打开Documents , Pictures , Music , Videos和所有其他自定义库等Windows 7库? 我尝试打开explorer.exe Libraries\Documents但它不起作用。