小编Mik*_*erk的帖子

在.Net应用程序中使用OnPaint的正确方法是什么?

有时我需要一个自定义的控件外观.或者做很多自定义绘画.我知道我可以这样做OnPaint(参见:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onpaint.aspx)

使用OnPaint?net应用程序自定义绘制内容的正确方法是什么?是否有任何规则需要记住以保持我的应用程序优化,并将渲染时间保持在最低限度?

注意:我已经看到并且经历过OnPaint的许多低效使用,因此我创建了这个问答.

.net performance onpaint

3
推荐指数
1
解决办法
2427
查看次数

MySql Dump 输出条件注释?执行转储作为查询来恢复数据库

注意:实际上有两个问题......

当我使用mysqldump二进制文件转储 mysql 数据库时,我得到一个文件,其中包含(在其他行中): CREATE DATABASE /*!32312 IF NOT EXISTS*/MyDatabase/*!40100 DEFAULT CHARACTER SET utf8 */;

我在 Google 和 MySql 参考资料上进行了搜索,但我找不到那些 /*!32312 的含义以及它们是如何工作的。我只能猜测它们是有条件的评论。例如,如果 build > 32312,执行“IF NOT EXIST”?

任何人都可以对此有所了解吗?

我想知道这一点的原因是因为我无法在 C# 客户端中使用转储内容作为 1 查询执行还原。使用此代码:

            MySqlConnection msc = default(MySqlConnection);
            MySqlCommand cmd = default(MySqlCommand);
            MySqlTransaction mst = default(MySqlTransaction);
            try
            {
                //Create a connection to the database
                msc = new MySqlConnection(ConnectionString);
                msc.Open();

                //Creata a MySql Transaction
                mst = msc.BeginTransaction();

                cmd = msc.CreateCommand();
                cmd.Transaction = mst;
                cmd.CommandText = ContentsOfMySqlDumpSql;

                cmd.ExecuteNonQuery();

                mst.Commit(); …
Run Code Online (Sandbox Code Playgroud)

mysql comments dump restore

3
推荐指数
1
解决办法
953
查看次数

为什么RegOpenKeyEx让我打开注册表编辑器中不存在的密钥?

在Microsoft Visual C++中,我有以下代码来访问注册表中的路径.然后我读键的值InstalledRegQueryValueEx.到目前为止,这个值似乎很好,1这与我系统上Visual C++ 2010运行时的存在相对应.(它恰好是检测c ++运行时存在的一段代码).

现在当我查看时regedit.exe,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0我没有VC在树上看到.

这怎么可能?我在这个问题中复制/粘贴了所有路径和代码,所以它们必须是正确的.

C++应用程序中的代码:

HKEY RegistryKey;
DWORD ErrorCode;
DWORD RegDwordValue = 0;
DWORD RegDwordValueSize = sizeof(DWORD);
if((ErrorCode = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
                "SOFTWARE\\Microsoft\\VisualStudio\\10.0\\VC\\VCRedist\\x86",
                0, //Reserved
                KEY_READ,
                &RegistryKey)) != ERROR_SUCCESS)
{
    //Either the key does not exists, or registry access is denied. Anyway, detection did not succeed
    std::cout << "Could not read registry path:\n\t" << lpcRegistryPath << "\n\tError code: " << ErrorCode;
    return false;
}
if((ErrorCode = …
Run Code Online (Sandbox Code Playgroud)

c++ registry regedit windows-7

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

如何使用内联汇编与.Net使用英特尔的RDRAND

我正在使用Intel Ivy Bridge CPU,并且想使用RDRAND操作码(https://software.intel.com/zh-cn/articles/intel-digital-random-number-generator-drng-software-implementation-guide)在C#中。

如何通过C#调用此CPU指令?我在这里看到了一个从c#执行汇编代码的示例:C#中的x86 / x64 CPUID

但是我不确定如何将其用于RDRAND。该代码不需要检查执行该代码的CPU是否支持该指令。

我已经看过这个C ++示例,它执行来自Intel的drng_samples的汇编字节代码:

int rdrand32_step (uint32_t *rand)
{
    unsigned char ok;

    /* rdrand edx */
    asm volatile(".byte 0x0f,0xc7,0xf0; setc %1"
        : "=a" (*rand), "=qm" (ok)
        :
        : "edx"
    );

    return ok;
}
Run Code Online (Sandbox Code Playgroud)

如何将在C#中执行汇编代码的示例与来自英特尔drng示例代码的C ++代码结合起来?

c# assembly instruction-set rdrand

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

WiX自定义操作,运行EXE,错误代码1721

我已经在互联网上阅读了很多例子,但我无法弄清楚出了什么问题.我有一个WiX安装程序,可以在安装时将所有MySQL服务器文件复制到某个位置.然后我想在安装结束之前运行MySQLInstanceConfig.exe.

<CustomAction Id="CAConfigureMySqlInstance"
              Directory="dir96BE76D0898DC48E62BC8465D43A5949"
              Impersonate="no"
              Execute="commit"
              ExeCommand="[dir96BE76D0898DC48E62BC8465D43A5949]MySQLInstanceConfig.exe"
              Return="check"
/>

<InstallExecuteSequence>
    <Custom Action='CAConfigureMySqlInstance' After='InstallFiles' />

    <!-- See this for Before/After sequence moments: http://msdn.microsoft.com/en-us/library/windows/desktop/aa371199(v=vs.85).aspx -->

</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

我认为After='InstallFiles'确实是安装程序将所有文件放在正确的位置之后.现在我看到进度条在安装程序中的"复制新文件"中.然后我收到一条消息"无法运行此安装所需的程序".当我查看日志文件时,我看到了这个:

MSI(s)(54:94)[14:14:32:886]:注意:1:1721 2:CAConfigureMySqlInstance 3:C:\ Program Files(x86)\ MyCompnay\MySQL\MySQL Server 5.5\bin\4: C:\ Program Files(x86)\ MyCompany\MySQL\MySQL Server 5.5\bin\MySQLInstanceConfig.exe

每当我在'Run(Windows + R)'中复制该路径时,都会运行MySQL配置器!所以路径是正确的.因此我得出结论,在错误发生的那一刻,文件已经被复制到该位置!错误代码是1721.

每当我更改ExeCommandC:\Windows\Explorer.EXE C:\SomeDirIKnow,Windows资源管理器都会启动...所以自定义操作似乎是正确的...

我该如何解决这个问题?

custom-action wix

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

PhysicalAddress.Parse()不会解析较低的cased字符串,这是一个bug吗?

注意:使用.Net 4.0

考虑以下代码.

String ad = "FE23658978541236";
String ad2 = "00FABE002563447E".ToLower();
try
{
    PhysicalAddress.Parse(ad);
}
catch (Exception)
{
    //We dont get here, all went well
}
try
{
    PhysicalAddress.Parse(ad2);
}
catch (Exception)
{
    //we arrive here for what reason?
}
try
{
    //Ok, I do it myself then.
    ulong dad2 = ulong.Parse(ad2, System.Globalization.NumberStyles.HexNumber);
    byte[] bad2 = BitConverter.GetBytes(dad2);
    if (BitConverter.IsLittleEndian)
    {
        bad2 = bad2.Reverse().ToArray<byte>();
    }
    PhysicalAddress pa = new PhysicalAddress(bad2);
}
catch (Exception ex)
{
    //We don't get here as all …
Run Code Online (Sandbox Code Playgroud)

.net c# parsing

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

如何获取数组中方法中使用的泛型类型?

我有这个通用方法,我想确保指定的类型是枚举.现在我知道我做不了类似的事情where T:enum.但我想在运行时确保.

我知道我可以这样做typeof(T).IsENum.但我想用这样的反射

public static List<Tuple<T, Y>> Produce<T, Y>()
    where T: struct, IConvertible
    where Y: struct, IConvertible
{
    var methodInfo = System.Reflection.MethodBase.GetCurrentMethod();
    foreach(var typeInMethod in methodInfo.GetGenericArguments()) 
        CheckTypeIsEnum(typeInMethod);
Run Code Online (Sandbox Code Playgroud)

问题是methodInfo.GetGenericArguments()返回的类型不是我指定的枚举类型.但相反,他们是TYBaseType: {Name = "ValueType" FullName = "System.ValueType"}.

总结:如何获取方法中使用的所有泛型类型的数组?

PS .Net 4.5

.net c# generics reflection types

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

使用一维索引访问多维数组

请参阅下面的代码片段。用一维索引访问多维数组的方法是什么?Foreach 可以做到。是的,我知道,具有产量的 IEnumerable 与索引不同。我应该使用 foreach 并创建一个新数组吗?或者我可以在不创建新数组的情况下做到这一点吗?

    int[,] myArray = new int[2, 2];
    myArray[0,0] = 1;
    myArray[1,1] = 2;
    myArray[0,0] = 3;
    myArray[1,1] = 4;
    foreach (var value in myArray)
    {
        Console.Write(value);
    }

    var valueAtIndex = myArray[2]; //Won't compile, error: Wrong number of indices inside []; expected 2
Run Code Online (Sandbox Code Playgroud)

.net c#

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

如何在 ngx-bootstrap datepicker 上的月份发生变化时触发事件?

我们正在使用 ngx-bootstrap,我们需要一个日期选择器。所以ngx-bootstrap 的 Datepicker似乎是一个显而易见的选择。当用户导航到下个月时,我们希望加载日历的可用日期。为此,我们想订阅一些事件。我在文档中没有看到这样的事件。但我确实在(常规)引导程序变体 datepicker 的文档中看到了它。我尝试了各种方法,甚至进入 dom 并为单击事件添加事件侦听器。这有效了 1 次,然后可能会重新渲染 UI 并重新创建按钮。最后的手段似乎要么使用 MutationObserver (非常痛苦),要么下载日期选择器的源代码并将其破解(也很痛苦)。这似乎是一件微不足道的事情:知道日历的月份何时变化。但我还没有到达那里。任何帮助深表感谢!

在此输入图像描述

events datepicker ngx-bootstrap angular

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