小编Nej*_*chy的帖子

实现更改为.NET的Random()

我正在迁移一个用于从.NET Framework 1.1解码到.NET Framework 4的方法.我注意到Random的实现已更改.因此,给定相同的种子,Random.NextBytes返回不同的结果.

所以,如果我运行以下代码.

byte[] bytes = new byte[4];
System.Random random = new System.Random(50);
random.NextBytes(bytes);

for(int i=0; i< bytes.Length; i++)
{
  Console.WriteLine("bytes[" + i + "] = " + bytes[i]);
}
Run Code Online (Sandbox Code Playgroud)

在.NET Framework 1.1下,它返回:

bytes[0] = 216
bytes[1] = 124
bytes[2] = 183
bytes[3] =  58
Run Code Online (Sandbox Code Playgroud)

在.NET framework 4下,它返回:

bytes[0] = 154
bytes[1] =  49
bytes[2] = 183
bytes[3] =  48
Run Code Online (Sandbox Code Playgroud)

解决此问题的最佳方法是什么?

.net c# random .net-1.1

16
推荐指数
2
解决办法
1767
查看次数

找出键盘布局何时更改

我正在编写一个屏幕键盘,并希望在更改键盘布局后重新绘制我的布局.

目前我打电话给:

GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), NULL));
Run Code Online (Sandbox Code Playgroud)

在每个按键上查看布局是否已更改.如果用户通过鼠标更改布局,则按钮不起作用.

我想知道在当前前景窗口的键盘布局发生变化时是否有任何方法可以获得通知,因此我可以在更改发生后立即重新绘制布局.

.net c# windows keyboard keyboard-layout

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

何时在WCF服务中调用析构函数

我需要创建一个维护WCF会话的服务.在构造函数中,我从数据库中读取数据,当会话结束时,我必须将其保存回来.

如果我理解正确,当我在客户端上调用Close()时会话结束(我的客户端ServiceClient是使用SvcUtil.exe创建的).

当我测试它时,我发现它有时在大约后被调用.10分钟,有时20分钟后,有时根本没有.

那么析构函数何时被调用?

服务

   [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
   public class Service:IService
   {
     private User m_User = null;

     public  Service()
     {
       m_User = User.LoadFromDB();
     }

     ~Service()
     {
       m_User.SaveToDB();
     }

     public void SetName(string p_Name)
     {
       m_User.Name = p_Name;
     }
    }
Run Code Online (Sandbox Code Playgroud)

Web.config文件

<?xml version="1.0"?>
<configuration>
  <system.web>
    <sessionState timeout="2" />
  </system.web>
  <system.serviceModel>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      <services>
        <service name="Karatasi.Services.B2C"  behaviorConfiguration="ServiceBehavior">
          <host>
            <baseAddresses>
              <add baseAddress="http://localhost:19401/B2C.svc"/>
            </baseAddresses>
          </host>
        <endpoint
           address=""
           binding="wsHttpBinding"
           bindingConfiguration="test"
           contract="Karatasi.Services.IB2C"
         />
        <endpoint
           address="mex"
           binding="mexHttpBinding"
           contract="IMetadataExchange"
         />
       </service>
     </services>
   <bindings>
     <wsHttpBinding>
       <binding name="test" receiveTimeout="00:01:00" > …
Run Code Online (Sandbox Code Playgroud)

c# session wcf destructor

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

选定的行不会在DataGridView中更新

我有一个绑定到我的datagridview的数据表。列之一是DataGridViewCheckBoxColumn。

通过单击按钮,您应该将列中的所有复选框更改为true。

private void btnPublishAll_Click(object sender, EventArgs e)
{
  for (int j = 0; j < this.dgrView.RowCount; j++)
  {
    this.dgrView[7, j].Value = true;
  }

  this.dgrView.EndEdit();
}
Run Code Online (Sandbox Code Playgroud)

当我按下按钮时,一切似乎都正常(所有复选框都为true),但是当我按下update时,所有内容都会更新,除了在btnPublishAll_Click期间选择的行。

我究竟做错了什么?

c# datagridview winforms

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