小编Ric*_*ard的帖子

ASP.NET和C#代码中的常量

我有一个.aspx页面,它在表格中创建一列复选框,使用ID来命名

<asp:TemplateField HeaderText="Select">
  <ItemTemplate>
    <asp:CheckBox ID="testCheck"  runat="server" AutoPostBack="true" />
  </ItemTemplate>                   
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

稍后在代码的C#部分,我试图通过使用以下代码检索复选框的值

CheckBox chk = (CheckBox)gridRow.FindControl("testCheck");
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想删除两个字符串并将值保存在一个公共常量中,有没有办法做到这一点?

c# asp.net

8
推荐指数
1
解决办法
2467
查看次数

订阅msmq

如何使用c#在msmq中订阅队列.假设我有一个客户作为胜利形式,并且想订阅一个阙,每当消息到达阙时,我希望表格得到通知.任何例子.谢谢

c# msmq winforms

7
推荐指数
1
解决办法
4316
查看次数

Azure表存储事务限制

我正在针对ATS运行性能测试,并且在针对同一个表/存储帐户使用多个虚拟机时,它的行为有点奇怪.

整个管道是非阻塞的(等待/异步)并使用TPL进行并发和并行执行.

首先,它非常奇怪,通过这种设置,我只得到大约1200次插入.这是在L VM盒上运行的,即4核+ 800mbps.

我正在插入具有独特PK和唯一RK的100.000行,这应该利用最终分布.

更确定的行为如下.

当我运行1个VM时,每秒大约有1200个插入.当我运行3个VM时,每秒插入一次大约730个.

阅读他们指定目标的博客文章非常幽默. https://azure.microsoft.com/en-gb/blog/windows-azures-flat-network-storage-and-2012-scalability-targets/

单表分区 - 表分区是表中具有相同分区键值的所有实体,通常表具有许多分区.单个表分区的吞吐量目标是:

每秒最多2,000个实体

请注意,这适用于单个分区,而不是单个表.因此,具有良好分区的表可以处理多达20,000个实体/秒,这是上述的整体帐户目标.

我该怎么做才能够每秒使用20k,如何每个VM执行超过1,2k?

-

更新:

我现在还尝试为每个单独的节点使用3个存储帐户,并且仍然获得性能/限制行为.我无法找到合乎逻辑的理由.

-

更新2:

我已经进一步优化了代码,现在我可以执行大约1550.

-

更新3:

我现在也曾在美国西部尝试过.那里的表现更糟糕.降低约33%.

-

更新4:

我尝试从XL机器执行代码.这是8个内核而不是4个内存和带宽的两倍,并且性能提高了2%,所以很明显这个问题不在我身边..

storage azure azure-table-storage

7
推荐指数
1
解决办法
3319
查看次数

LINQ to SQL列有关键字作为列名,如何引用/转义

在LINQ to SQL语句中,我在数据库中有一个列名,它也是一个C#关键字(void).如何让编译器将其视为对象属性而不是关键字?

我可以使用方法表示法重写这个,当然,但是必须有一种方法可以在这里给编译器一个提示......

var p = from c in mytable
        where c.id = rowNumber
        select ( new { voidedState = c.void } );  // <--- Problem is here
Run Code Online (Sandbox Code Playgroud)

错误是:

Identifier expected; 'void' is a keyword
Run Code Online (Sandbox Code Playgroud)

我无法争辩,我只是在寻找一种解决方法.

谢谢.

c# linq syntax escaping

6
推荐指数
1
解决办法
2309
查看次数

挂在查询中的MS SQL特定表

我有SQL Server 2008.我在数据库的表中运行查询.最奇怪的事情不断发生.我在表上运行一个简单的select语句.我知道表中有62行,但它在第48行卡住并继续"查询......".等了好几个小时,它没有从那里继续前进.我只知道两个程序,一个报告服务连接到该特定表和另一个用户.有没有人知道可能导致这种情况的原因以及如何跟踪该表上的锁源?

作为旁注,我注意到日志只在我检查前一天发出了Autogrow失败的通知.这可能与它有关吗?

sql-server sql-server-2008

6
推荐指数
1
解决办法
6812
查看次数

当静态构造函数/类型初始化程序失败时,来自GC线程的未处理异常

(标题是:"TypeLoadException并不总是包含在使用了Reflection的TargetInvocationException中")

使用BLToolkit我发现了一个有趣的事实 - methodInfo.Invoke并不总是在调用方法中捕获异常.

参见示例 - 它在方法的静态构造函数中模拟异常,通过反射调用.

问题是TestComponent继承自Component AND并重写了Dispose方法.所以在这个示例中将有2条消息 - 一个"句柄"和一个"unhandle" - 似乎组件在较低级别的Reflection内部具有不同的处理.

如果我们注释掉方法Dispose(bool disposing) - 我们只会收到"handle"消息.

任何人都可以解释为什么会发生并提出解决方案?BLToolkit中的try-catch无法标记为答案 - 我不是他们团队的成员:)

    class Program
{
    static void Main()
    {
        AppDomain.CurrentDomain.UnhandledException +=
            (sender, eventArgs) => Console.WriteLine("unHandled " + eventArgs.ExceptionObject.GetType().FullName);
        try
        {
            try
            {
                var instance = Activator.CreateInstance(typeof(ComponentExecutor));
                MethodInfo mi = typeof(ComponentExecutor).GetMethod("Do");
                BindingFlags bf = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly |
                                  BindingFlags.InvokeMethod;

                mi.Invoke(instance, bf, null, new object[0], CultureInfo.InvariantCulture);
            }
            catch (TargetInvocationException tarEx)
            {
                throw tarEx.InnerException;
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Handled " …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection

6
推荐指数
1
解决办法
1496
查看次数

为什么Java和C#在oops方面有所不同?

1)为什么以下代码不同.

C#:

class Base
{
  public void foo()
  {
     System.Console.WriteLine("base");
  }
}

class Derived : Base
{
  static void Main(string[] args)
  {
    Base b = new Base();
    b.foo();
    b = new Derived();
    b.foo();
  }
  public new void foo()
  {
    System.Console.WriteLine("derived");
  }
}
Run Code Online (Sandbox Code Playgroud)

Java的:

class Base {
  public void foo() {
    System.out.println("Base");
  }  
}

class Derived extends Base {
  public void foo() {
    System.out.println("Derived");
  }

  public static void main(String []s) {
    Base b = new Base();
    b.foo();
    b = new Derived(); …
Run Code Online (Sandbox Code Playgroud)

c# java oop

6
推荐指数
2
解决办法
828
查看次数

如何在连续任务中强制执行任务中的异常?

我有一个任务来执行HttpWebRequest使用

 Task<WebResponse>.Factory.FromAsync(req.BeginGetRespone, req.EndGetResponse)
Run Code Online (Sandbox Code Playgroud)

这显然可能会失败WebException.对于调用者我想返回一个Task<HttpResult>where HttpResult辅助类型来封装响应(或不是).在这种情况下,4xx或5xx响应也不例外.

因此,我在请求任务中附加了两个延续.一个与TaskContinuationOptions OnlyOnRanToCompletion另一个OnlyOnOnFaulted.然后将整个事物包裹Task<HttpResult>起来以获取一个结果,无论哪个继续完成.

使用该AttachedToParent选项创建三个子任务(请求加两个延续)中的每一个.

但是当调用者等待返回的外部任务时,AggregateException抛出的是请求失败.

我想,在故障延续中,观察WebException所以客户端代码只能查看结果.添加一个Waiton on fault continuation抛出,但是试一试这个并没有帮助.也不看Exception属性(如节"五合一例外通过使用Task.Exception属性"暗示在这里).

我可以安装一个UnobservedTaskException事件处理程序来过滤,但由于事件没有提供与故障任务的直接链接,这可能会在应用程序的这一部分之外进行交互,并且是一个大锤破解的例子.

鉴于出现故障的情况,Task<T>有没有办法将其标记为"故障处理"?

简化代码:

public static Task<HttpResult> Start(Uri url) {
    var webReq = BuildHttpWebRequest(url);
    var result = new HttpResult();
    var taskOuter = Task<HttpResult>.Factory.StartNew(() => {
        var tRequest = Task<WebResponse>.Factory.FromAsync(
                            webReq.BeginGetResponse,
                            webReq.EndGetResponse,
                            null, TaskCreationOptions.AttachedToParent);
        var tError = tRequest.ContinueWith<HttpResult>( …
Run Code Online (Sandbox Code Playgroud)

.net-4.0 parallel-extensions

5
推荐指数
1
解决办法
1395
查看次数

在C#中混合和命名参数:为什么输出参数也需要命名?

简短版本:参数后面的命名参数out给出了编译器错误,但我在语言规范中找不到对此行为的任何支持.

长版:

我正在使用Enum.TryParse<TEnum>三个参数重载,但我更喜欢命名ignoreCase参数以使我的代码更清晰,调用如下:

MyEnum res;
b = Enum.TryParse<MyEnum>(inputString, true, out res);
Run Code Online (Sandbox Code Playgroud)

留下布尔不清楚的含义(除非这个方法已知1).因此我想用:

b = Enum.TryParse<MyEnum>(inputString, out res, ignoreCase: true);
Run Code Online (Sandbox Code Playgroud)

但是,编译器将此报告为错误:

命名参数'ignoreCase'指定已为其指定了位置参数的参数

并且IDE突出显示该ignoreCase参数.针对.NET 4的VS2010以及针对4或4.5的VS11 Beta都会产生相同的结果.在所有情况下,命名out参数都会删除错误.

b = Enum.TryParse<MyEnum>(inputString, result: out res, ignoreCase: true);
Run Code Online (Sandbox Code Playgroud)

我已经在框架和我的程序集中尝试了许多不同的方法(包括避免泛型)2:总是相同的结果:out参数后跟命名参数会产生错误.

我看不出有什么理由错误,并且第7.5.1节参数列表中的C#语言规范:4.0版似乎并没有提供任何理由的out,然后命名参数应该给出一个错误.错误的文本似乎支持解释为一个错误:没有位置参数可能是一个有效的匹配ignoreCase.

我对规范的解读是错误的吗?或者这是编译器错误?

C#7.2更新

当使用C#7.2解除调用时,对所有命名参数的这种限制必须遵循位置参数.

请参阅https://docs.microsoft.com/en-gb/dotnet/csharp/whats-new/csharp-7-2#non-trailing-named-arguments.


1因此,框架设计指南中的建议更倾向于enum参数.

2例如:给定:

private static void TestMethod(int one, float two, out …
Run Code Online (Sandbox Code Playgroud)

c# named-parameters out-parameters compiler-bug

5
推荐指数
1
解决办法
3651
查看次数

尝试在 Powershell v1 中嵌入 C# 代码

这是我第一次发帖提问。我是 csharp 和 powershell 的新手。如果我的英语一点都不好,请多多包涵。我一直在尝试将我的 csharp 代码转换为 powershell,但没有成功。我试图研究有关 powershell 的文档并尝试每一个,不幸的是,对我来说没有任何作用。我的 csharp 代码在 Visual Studio 2010 中工作,但我无法在 Powershell 中嵌入和工作。下面的代码简单地捕获任务管理器的 PID 并将其写入带有时间和日期戳的记事本。任何帮助将不胜感激。

我的 csharp 代码是:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace GET_TASK
{
    class Program
    {
        static void Main(string[] args)
        {

            var processList = Process.GetProcessesByName("taskmgr");                

            foreach (var process in processList)
            {

                string myPath = "C:/powershell/GET_TASK"; //change data path as needed

                FileStream logfile;
                //log program process
                logfile = new FileStream(myPath + "/logfile.txt", FileMode.Append, FileAccess.Write); 

                TextWriter oldLog …
Run Code Online (Sandbox Code Playgroud)

.net c# powershell

5
推荐指数
1
解决办法
1541
查看次数