是否有可能在C#中抢占构造函数?
例如,考虑代码:
public class A
{
public bool ready = true;
public A()
{
ready = false; // Point #1
// Other initialization stuff
ready = true; // Point #2
}
}
Run Code Online (Sandbox Code Playgroud)
在代码中的其他地方,两个线程可以访问类型A的变量,第一个线程调用在#1点抢占的构造函数.然后第二个线程测试ready并发现它仍然是真的因此它做了一些坏事.
这种情况可能吗?
进一步来说:
lock构造函数中的同步代码?我正在开发一个使用神经网络的应用程序.目前我正在考虑将其置于基于SQL(可能是SQL服务器)或图形数据库的关系数据库中.
从性能的角度来看,神经网络将非常庞大.
我的问题:
我正在尝试设置链接服务器并遇到问题.
在目标服务器上,我配置了一个用户,假设是Q.无论用户在源服务器上登录了什么用户,我都设置了源服务器以连接Q的登录凭据.
但是,当我尝试连接时,我收到错误
"命名管道提供程序:无法打开与SQL Server的连接[1231]."
我尝试在服务器配置管理器中启用和禁用命名管道,但无济于事.
我也看到一些事情说这是一个安全问题.问题是,我可以使用SQL管理工作室中的Q凭据从Target连接到Source.
这里有什么愚蠢的东西吗?
我试图使用一个FlowLayoutPanel包含任意数量的高UserControls,一个在另一个旁边.当一个新的控件被添加到FlowLayoutPanel,我希望它出现在上一个控件的右侧,而不是在下面.
我订AutoScroll到true的FlowLayoutPanel,并有FlowDirection作为LeftToRight.
下面是"正确"行为的示例(右侧添加了新项目,溢出时出现垂直滚动条):

但是,当我超过"行"的末尾时,FlowLayoutPanel将控件放到"新行".所需的行为是出现一个水平滚动条,只有这一行的垂直溢出出现在下面.
这是不正确行为的示例:

如何强制所有对象排成一行(即使用水平滚动条)?