小编Luk*_*ger的帖子

从DataGridView自动更新数据库中的值

我目前正在使用MySql与C#结合的项目.DataGridView的数据由DB中多个表的连接提供.为了显示数据我使用以下,工作,代码:

adapter.SelectCommand = new MySqlCommand(
            " SELECT" +
            " l.lot AS Lot, "+
            " m.comment AS Bemerkungen," +
            ... (multiple columns from different tables) ...
            " FROM m " +
            " JOIN m2p ON m.m2p_id = m2p.id" +
            ... (more joins) ...
            , this._mySqlConnection);
dataGridView1.DataSource = data;
adapter.Fill(data);
Run Code Online (Sandbox Code Playgroud)

现在允许GUI的用户修改某个列("注释"列).所以我为CellEndEdit事件分配了一个eventHandler ,当用户修改了允许的列时,adapter.Update(data)就调用了它.现在这不会执行正确的操作.

要定义我的updatecommand,我使用了以下代码:

adapter.UpdateCommand = new MySqlCommand(
                " UPDATE m" +
                " JOIN  l ON m.l_id = l.id" +
                " SET m.comment = @comment" +
                " WHERE l.lot …
Run Code Online (Sandbox Code Playgroud)

c# mysql winforms

10
推荐指数
1
解决办法
2777
查看次数

是否可以睡一定的周期

我想知道是否有可能让一个线程睡眠一定量的CPU周期?

我想过只插入"nop",但我不确定它们是否会被优化掉,我希望得到一个高级解决方案.

有什么好看的你可以推荐我吗?如果不能阻止,手动插入的"nop"会被优化掉,而不会禁用所有优化?亲切的问候

LukasHäfliger

编辑:作为另一个问题:是否可以测量某个代码片段执行期间所需的周期数量?

c# sleep cpu-cycles

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

在输入 ' ' 处没有可行的替代方案

我知道以前有人问过这个问题,但我还没有找到任何解决我的具体问题的方法。我将 Antlr4 与 C# 目标一起使用,并且我有以下词法分析器规则:

INT     : [0-9]+
        ;

LETTER  : [a-zA-Z_]+
        ;

WS      : [ \t\r\n\u000C]+ -> skip
        ;

LineComment
        : '#' ~[\r\n]* -> skip
        ;
Run Code Online (Sandbox Code Playgroud)

这些都是词法分析器规则,但是有很多解析器规则我不会在这里发布,因为我认为它们不相关。我遇到的问题是空格不会被跳过。当我在词法分析器运行我的输入后检查令牌流时,空格仍在那里,因此会导致错误。我使用的输入是比较基础的:

"fd 100"
Run Code Online (Sandbox Code Playgroud)

它解析完成,直到达到此解析器规则:

noSignFactor
        : ':' ident                 #NoSignFactorArg
        | integer                   #NoSignFactorInt
        | float                     #NoSignFactorFloat
        | BOOLEAN                   #NoSignFactorBool
        | '(' expr ')'              #NoSignFactorExpr
        | 'not' factor              #NoSignFactorNot
        ;
integer : INT                       #IntegerInt
        ;
Run Code Online (Sandbox Code Playgroud)

antlr4

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

使用 Graphics.FromHwnd(...) 时出现 OutOfMemory 异常

我尝试使用以下代码直接绘制到屏幕:

[DllImport("user32.dll")]
public static extern IntPtr GetDC(IntPtr ptr);

static void draw(Rectangle r, Brush b, IntPtr hwnd)
{
    using (Graphics g = Graphics.FromHwnd(hwnd))
    {
        g.FillRectangle(b, r);
    }
}
static void Main(string[] args)
{
    draw(new Rectangle(0, 0, 400, 400), Brushes.PaleGoldenrod, GetDC(IntPtr.Zero));
}
Run Code Online (Sandbox Code Playgroud)

查阅文档和各种示例,这应该是有效的代码。尽管如此,我在以下行收到 OutOfMemoryException:

using(Graphics g = Graphics.FromHwnd(hwnd))
Run Code Online (Sandbox Code Playgroud)

由于我只查询单个句柄,因此我不明白如何引发此异常。此示例中没有其他代码。

c# system.drawing

0
推荐指数
1
解决办法
911
查看次数

标签 统计

c# ×3

antlr4 ×1

cpu-cycles ×1

mysql ×1

sleep ×1

system.drawing ×1

winforms ×1