小编Her*_*der的帖子

2个线程同时进入锁定的代码块

我试图一次只允许一个线程输入一个特定的代码块:

private static object lockObject = new object();

protected override void WndProc(ref Message message) {
    if (id != null) {
        id.ProcessMessage(message);

        lock(lockObject) {
            if (id.ScanCode.Length > 4) {
                ...
            }
        }
    }

    base.WndProc(ref message);
}
Run Code Online (Sandbox Code Playgroud)

有时2个线程进入并执行代码.我在VS调试器中确认了这一点.有时只有一个线程进入,这是好的,但至少有一半的时间,2个线程进入 - 似乎从不超过2.

在if-block里面,我这样做:

id.ScanCode = string.Empty;
return;
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎应该阻止第二个线程进入,如果它确实被阻止.但也许我做错了.防止第二个线程进入那里最简单的方法是什么?他们可以同时进入吗?

c# multithreading c#-4.0

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

带有IIS的Windows 10 Pro上的SSL3_GET_SERVER_CERTIFICATE证书验证失败

当尝试smtp.google.com通过PHPMailer在Windows 10上由IIS托管的PHP上发送电子邮件时,我收到以下错误消息:

Connection failed. 
Error #2: stream_socket_enable_crypto(): SSL operation failed with code 1. 
OpenSSL Error messages
error:14090086
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)

我确定该错误的关键部分是证书验证失败.我正在运行OpenSSL,它已启用并链接到我的PHP.这是我的本地PHP实例输出的一些信息:

OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.0.1p 9 Jul 2015
OpenSSL Header Version => OpenSSL 1.0.1p 9 Jul 2015

Directive => Local Value => Master Value
openssl.cafile => no value => no value
openssl.capath => no value => no value
Run Code Online (Sandbox Code Playgroud)

这是我的PHP代码:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'src/Exception.php';
require 'src/PHPMailer.php'; …
Run Code Online (Sandbox Code Playgroud)

php iis phpmailer php-openssl

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

返回匿名双字符串类型的泛型列表的返回类型是什么?

我有这个功能:

public static List<string> JoinDataTablesMultipleColumns(DataTable dt1, DataTable dt2, string col1, string col2, string col3) {
 var multiJoin = from table1 in dt1.AsEnumerable()
 join table2 in dt2.AsEnumerable()
 on new {
   Col1 = table1.Field < string > (col1),
   Col2 = table1.Field < string > (col2),
   Col3 = table1.Field < string > (col3),
 }
 equals new {
   Col1 = table2.Field < string > (col1),
   Col2 = table2.Field < string > (col2),
   Col3 = table2.Field < string > (col3),
 }
 select new {
   SeriesID …
Run Code Online (Sandbox Code Playgroud)

c# anonymous-types

0
推荐指数
2
解决办法
295
查看次数

Javascript 日期对象 1980 年 1 月 1 日错误

当我将字符串日期转换为日期对象时,日期错误:

function formatDate(inputDateString) {
    const date = new Date(inputDateString);
            
    // Check if the date is valid
    if (isNaN(date.getTime())) {
        return "Invalid Date";
    }

    const month = String(date.getMonth() + 1).padStart(2, "0"); // Adding 1 because months are zero-based
    const day = String(date.getDate()).padStart(2, "0");
    const year = date.getFullYear();

    return `${month}/${day}/${year}`;
}

var testDate = formatDate("1980-01-01");
console.log("testDate: " + testDate);
Run Code Online (Sandbox Code Playgroud)

结果:1979 年 12 月 31 日

起初我以为我的getXXX()构造可能是可疑的,但在 Chrome 开发工具中,调试器告诉我,当我创建对象时new Date(),它认为日期是 12/31/1979。我想知道 GMT/UTC 类型的东西,但我相信 js 日期函数已经考虑了用户的时区。我现在正处于山地时间。

啥?

javascript

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