小编Igb*_*man的帖子

我可以提高Thread.Sleep的分辨率吗?

Thread.Sleep()分辨率从1到15.6ms不等

鉴于此控制台应用:

class Program
{
    static void Main()
    {
        int outer = 100;
        int inner = 100;
        Stopwatch sw = new Stopwatch();

        for (int j = 0; j < outer; j++)
        {
            int i;
            sw.Restart();
            for (i = 0; i < inner; i++)
                Thread.Sleep(1);
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我期望输出为100个数字接近100.相反,我得到这样的东西:

99 99 99 100 99 99 99 106 106 99 99 99 100 100 99 99 99 99 101 99 99 99 99 99 99 99 99 99 99 99 …

.net thread-sleep

8
推荐指数
3
解决办法
3363
查看次数

更改单个DataGridView列中所有单元格的填充

我的C#应用​​程序中有一个DataGridView.使用设计器,我在DGV本身设置了一个AlternatingRowsDefaultCellStyle以及DefaultCellStyle属性.这两种样式的填充值都是0, 0, 5, 0.我没有为Edit ColumnsDataGridView Tasks加载项的菜单中的任何DGV列设置任何自定义样式.

DGV中有一列是一个图像列,我为每一行绘制一个小图.我想从此列中的所有单元格中删除填充,因此没有应用于单元格的填充,这会在图形的末尾留下一些空白.

我尝试过以下每一项操作都不会从列中的任何单元格中删除填充,但也不会抛出任何异常.

// first attempt
// taken from http://social.msdn.microsoft.com/Forums/eu/winforms/thread/a9227253-8bb4-429a-a700-8a3a255afe4d
deviceGrid.Columns["GProduction"].DefaultCellStyle.Padding = new Padding(0);

// second attempt
DataGridViewCellStyle style = deviceGrid.Columns["Graph"].DefaultCellStyle; // also tried Clone()
style.Padding = new Padding(0);
deviceGrid.Columns["GProduction"].DefaultCellStyle = style;

// third attempt
DataGridViewColumn col = deviceGrid.Columns["Graph"];
DataGridViewImageCell icell = new DataGridViewImageCell();
icell.Style.Padding = new Padding(0);
col.CellTemplate = icell;
Run Code Online (Sandbox Code Playgroud)

我怀疑可能DefaultCellStyle来自DataGridView本身的填充覆盖了我试图为列设置的默认单元格样式,但如果是这种情况,我需要做些什么来防止这种情况?

解决方案:
在按照jmh_gr提供的链接后,我发现问题是DefaultCellStyleDataGridView本身最后继承在单元格上,所以我不得不从DGV属性中删除填充,并将其应用到除了我没有的那个列之外的所有列不想填充.

c# datagridview winforms

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

将app.config的一部分移动到单独的文件中

为了方便我的应用程序,我需要在单独的文件中使用app.config的"runtime"元素.

试过像

<runtime file="runtime.conf" />
Run Code Online (Sandbox Code Playgroud)

并且

<runtime configFile="runtime.conf" />
Run Code Online (Sandbox Code Playgroud)

在runtime.conf我有:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
            .......
    </assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)

但它被忽略了......

有没有办法找出问题所在.

当然,当我将运行时部分直接复制到app.config时,它可以工作.

我在某个地方发现,当使用configFile ="..."时,包含的文件必须放在子目录中.试了但是它也行不通......

似乎包括不适用于运行时部分.

.net configuration app-config

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

在INSERT SELECT语句期间生成增量数字列值

我需要在Oracle中将一些数据从一个表复制到另一个表,同时为新表中的数字列生成增量值.这是一次只进行一次的练习,行数很少(100).

我有足够的解决方案解决这个问题,但我很想知道是否有更优雅的方式.

我正在使用临时序列,如下所示:

CREATE SEQUENCE temp_seq
    START WITH 1;

INSERT INTO new_table (new_col, copied_col1, copied_col2)
    SELECT temp_seq.NEXTVAL, o.*
      FROM (SELECT old_col1, old_col2
              FROM old_table,
          ORDER BY old_col1) o;

DROP SEQUENCE temp_seq;
Run Code Online (Sandbox Code Playgroud)

没有创建序列或任何其他临时对象有没有办法?具体来说,这可以使用自包含的INSERT SELECT语句完成吗?

请将触发器视为非选项.

更多信息:我想控制新行的插入顺序,它与旧表中创建的顺序不一样(注意我上面添加了ORDER BY子句).但我仍然希望我的新顺序列从1开始.

有类似的问题,但我相信我的问题的细节是SO的原创.

sql oracle insert auto-increment

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

关于C#"使用"语句的样式/可读性问题

我想知道你对我所涉及的编码风格问题的看法.我意识到可能没有明确的答案,但我想看看在一个方向或另一个方向是否有强烈的偏好.

我正在通过一个解决方案using在很多地方添加语句.我常常会遇到这样的事情:

{
    log = new log();
    log.SomeProperty = something;  // several of these
    log.Connection = new OracleConnection("...");
    log.InsertData(); // this is where log.Connection will be used
    ... // do other stuff with log, but connection won't be used again
}
Run Code Online (Sandbox Code Playgroud)

其中log.Connection是OracleConnection,它实现了IDisposable.

在我的neatnik想要改变它:

{
    using (OracleConnection connection = new OracleConnection("..."))
    {
        log = new log();
        log.SomeProperty = something;
        log.Connection = conn;
        log.InsertData();
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,简洁的爱好者和稍微快速完成工作的人希望这样做:

{
    log = new log();
    log.SomeProperty = something; 
    using (log.Connection = new …
Run Code Online (Sandbox Code Playgroud)

c# coding-style using-statement

7
推荐指数
2
解决办法
308
查看次数

你能得到裁剪控件的可见区域的大小吗?

有没有办法在WinForms中获取剪切控件的可见部分的大小?

一个非常简单的示例:在窗体上放置一个控件,使窗体宽度小于控件宽度.如何获得控件可见区域的宽度?在这种情况下,您可以使用表单的ClientSize,但并不总是这么简单.

一个更复杂(和真实)的例子:我有一个标签,AutoSize设置为true,它可以超出其包含控件的宽度,导致它被剪裁.当发生这种情况时,我需要知道.它不像将标签的宽度与其容器的宽度进行比较那么简单,因为容器也可能具有AutoSize = true并且也被剪裁.

目前我的方法是走向容器树,直到找到一个AutoSize = false的容器,并获得它的宽度.我还必须考虑每个容器的填充.但是这只考虑控件被其容器或容器的容器等夹住.如果有问题的控件或任何容器被具有更高Z顺序的同级控件剪切,则无法工作.我怀疑还有其他方法可以轻易打破这种方法.

将标签AutoSize更改为false不是一个选项.标签位于UserControl上,该控件设置为AutoSize,以便在标签增长时,UserControl随之增长.在不使用AutoSize的情况下使其工作非常痛苦.

我尝试使用的东西,但没有成功:

Control.ClientSize,Control.ClientRectangle,Control.PreferredSize,Control.CreateGraphics().VisibleClipBounds.

我已经玩了一下Graphics类,但我在那里.Graphics.VisibleClipBounds听起来很有希望,但似乎总是与所提到的其他尺寸属性相同.

这与WinForms有关.如果有的话,我会对ap/invoke解决方案感到满意.

在发布之前我确实做了详尽的搜索.没有类似的问题是有帮助的.

.net graphics controls winforms bounds

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

选择特定数据库管理系统有哪些因素?

为什么有这么多数据库管理系统?我不是数据库专家,我从未想过使用除mySQL之外的其他数据库.

编程语言提供了不同的范例,因此为您的目的选择特定语言是有意义的.

选择特定数据库管理系统的因素有哪些?

database language-agnostic

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

从WSDL C#生成Web服务代理

我正在使用Fedex webservice.他们没有提供像http://hostServer/WebserviceRoot/WebServiceName.asmx这样的Web服务URL .相反,他们提供了一个.wsdl文件

请指导我从.wsdl文件生成Web服务代理类并向我的项目添加Web服务引用.

我知道从wsdl类似的生成代理

wsdl /l:cs /protocol:SOAP /o:MyProxy.cs mywsdl.wsdl
Run Code Online (Sandbox Code Playgroud)

但我想知道它的作用.它可能会创建代理类,但如何将Web服务引用添加到我的项目中?

c# wsdl web-services

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

如何使Settings.settings数据持久化

我有一个Windows窗体应用程序,我正在使用Settings.settings类来存储用户的配置(电子邮件首选项,主题等)我没有意识到在用户关闭应用程序后,设置已经消失!

这个应用程序即将发布到生产中,所以我必须尽快提供解决方案.

.net c# settings winforms

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

每当我的MS Graph API邮件搜索找不到结果时,为什么会出现网关超时?

从本周开始gateway timeout,当我的邮件搜索找不到任何结果时,我突然从Graph中获取信息。

我正在使用这样的查询:

https://graph.microsoft.com/v1.0/users/shared@notreal.com/mailFolders/AllItems/messages?$search="participants:some.person@fake.com"&$select=from,subject,HasAttachments,Id,SentDateTime&$top=100
Run Code Online (Sandbox Code Playgroud)

这是一个图查询,它从shared@notreal.com发送者或接收者包括的Office 365邮箱中请求最多100封电子邮件some.person@fake.comshared@notreal.com是与拨打电话的帐户共享的邮箱。

我的应用已通过oauth2身份验证代码流进行了身份验证,并已获得所有必要的权限。

This has been working for about a year. But starting a few days ago, this query only succeeds if results are found. When no results are found, the query takes 30 seconds, Graph returns UnknownError and the response is 504 with reasonphrase Gateway Timeout.

It seems as though something has changed in the Graph API - or perhaps in the Office 365 API, …

office365api microsoft-graph microsoft-graph-mail

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