我试图一次只允许一个线程输入一个特定的代码块:
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)
对我来说,这似乎应该阻止第二个线程进入,如果它确实被阻止.但也许我做错了.防止第二个线程进入那里最简单的方法是什么?他们可以同时进入吗?
当尝试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) 我有这个功能:
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) 当我将字符串日期转换为日期对象时,日期错误:
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 日期函数已经考虑了用户的时区。我现在正处于山地时间。
啥?