小编Roe*_*sim的帖子

C#中的多线程CPU使用率

我的程序使用预定数量的线程,每个线程都执行独立工作.我使用i7-2600 CPU,但我关闭了超线程模块,因此它在4个内核上运行4个线程.当我使用1个线程运行程序时,CPU使用率为25%,这是完全使用1个线程的完美,但是当我运行4或3个线程时,我只获得60%的CPU,为什么?

就像我之前提到的那样,线程是完全独立的(没有锁和没有争论)当我用1个线程运行程序4次时,我获得了100%的CPU使用率(即,当每个进程的4个进程为1个线程时,我得到了正确的CPU使用率)

有任何想法吗?

更多信息:

  1. 在处理所有需要的数据时,我没有使用I/O加载到内存中,每个线程在处理之前加载自己的数据.
  2. 我从数据库加载数据(使用oleDb),但我正在描述的问题发生在加载后所有线程都在处理(没有加载完成).
  3. 数字是:
    • 2个线程大约40%而不是50个(每个线程85%).
    • 3个线程大约50%而不是75个(每个线程65%).
    • 4个线程大约60%而不是100个(每个线程60%).
  4. 我使用带有16GB内存的i7 2600,但该进程的内存使用率并未接近.
  5. 我运行Windows性能监视器来寻找没有的争用.

c# multithreading cpu-usage

15
推荐指数
1
解决办法
5240
查看次数

mshtml.HTMLTableCell具有不正确的innerText值

当我尝试解析HTMLTableCellinnerText值是不正确的,似乎我得到的是类名而不是文本.

现在奇怪的是,当我在调试中查看单元格(在VS2010中)时,我看到正确的值我做错了什么?

进一步的研究提出了这个问题,当我查看VS2010中的值时,看起来这个 cell.innerText"中心时间"((mshtml.HTMLTableCellClass)(单元格)).innerText"23:45".问题是,当我转换为mshtml.HTMLTableCellClass时它不会编译,所以我必须使用接口(为什么会这样?)

见下面的代码:

mshtml.HTMLDocument doc = MainBrowser.Document as mshtml.HTMLDocument;

if (doc != null)
{

    mshtml.HTMLTable table = doc.getElementById("ecEventsTable") as mshtml.HTMLTable;

    List<List<string>> textRows = new List<List<string>>();

    foreach (mshtml.HTMLTableRow row in table.rows)
    {
        if (row != null && row.id != null && row.id.Contains("eventRowId"))
        {
            List<string> temp = new List<string>();

            foreach (mshtml.HTMLTableCell cell in row.cells)
            {
                string text = cell.innerText;
                if (text != null && text != "" && text …
Run Code Online (Sandbox Code Playgroud)

html c# mshtml innertext

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

从Func <object,string>到Func <string,string>的转换工作但到Func <int,string>失败

我有以下代码:

static Func<object, string> s_objToString = (x) => x.ToString();
static Func<string, string> s_stringToString = s_objToString; //compiles
static Func<int, string> s_intToString = s_objToString; //error
Run Code Online (Sandbox Code Playgroud)

第二行编译但第三行无法编译并出现错误:

无法隐式将类型' System.Func<object,string>' 转换为' System.Func<int,string>'

这是为什么?

据我所知,遗传学,尽管字符串是从对象派生List<string>不会得到List<object>,但在这里object,以string作品和objectint失败了,为什么?

好吧,让我说我理解为什么; 现在的问题是有办法解决它(其他然后定义MyInt类框int,因为Func<object,string>Func<MyInt,string>作品)?

c# generics func covariance contravariance

4
推荐指数
1
解决办法
1657
查看次数

当列名包含'/'时,为什么DataTable值不会显示在WPF DataGrid上?

下面DataTable中第二列的名称是"f/g",当我运行它时,我没有看到屏幕第二列中的值,为什么会这样?

顺便说一句,当我把它变成"f:g"时它可以工作,但是"f [g"没有.

        DataTable resultDataTable = new DataTable();

        DataColumn id_column = new DataColumn();
        id_column.DataType = System.Type.GetType("System.String");
        id_column.ColumnName = "ID";
        id_column.ReadOnly = true;
        id_column.Unique = true;

        resultDataTable.Columns.Add(id_column);

        DataColumn f_column = new DataColumn();
        f_column.DataType = System.Type.GetType("System.Double");
        f_column.ColumnName = "f/g";
        f_column.ReadOnly = true;

        resultDataTable.Columns.Add(f_column);

        foreach (var entry in results.Results)
        {
            DataRow dr = resultDataTable.NewRow();
            dr[0] = entry.Key;
            dr[1] = entry.Value;
            resultDataTable.Rows.Add(dr);
        }

        ResultsDataGrid.ItemsSource = resultDataTable.AsDataView();
Run Code Online (Sandbox Code Playgroud)

c# wpf datatable datagrid

2
推荐指数
1
解决办法
1152
查看次数

在 .net core 项目中在 Linux 上运行时设置 GCServer = True

如何在 .net core 项目中将 GCServer 设置为 true?通常在 .net 框架项目中,我添加一个 App.Config xml 文件,该文件将 GCServer 变量设置为 true,但这在 Linux 上运行的 .net 核心项目中不起作用(App.Config 文件已生成并发布,但变量仍然没有) t 变化)

.net c# linux garbage-collection .net-core

2
推荐指数
1
解决办法
2404
查看次数