我试图在ac#app中锁定一个"盒装"对象,这不可能吗?
class t
{
System.Object t_x = new object();
public t(int p)
{
t_x = p;
}
public void w()
{
lock (t_x)
{
for (int i = 0; i < 4; i++)
{
{
t_x = ((int)t_x) + 1;
Console.WriteLine(t_x);
Thread.Sleep(1000);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在另一个类中,我可以开始2个线程:
Thread b1 = new Thread(new ThreadStart(t1.w));
b1.Start();
Thread b2 = new Thread(new ThreadStart(t1.w));
b2.Start();
Run Code Online (Sandbox Code Playgroud)
但是该部分未锁定.当我锁定一个任意对象(即一个已创建但未被修改为对象a = new object())时,它会很好地锁定.拳击操作不知何故"depromotes"我的对象?
在一个项目中,我有两个类:
// mainw.h
#include "IFr.h"
...
class mainw
{
public:
static IFr ifr;
static CSize=100;
...
};
Run Code Online (Sandbox Code Playgroud)
// IFr.h
#include "mainw.h"
...
class IFr
{
public float[mainw::CSize];
};
Run Code Online (Sandbox Code Playgroud)
但我无法编译此代码,在该static IFr ifr;行收到错误.是否禁止这种交叉包含?
我使用的是用C开发的库(特别是:HTK).我对源进行了一些修改,并尝试从函数中获取指针(到链表的开头).不要过多细节; 说我有一个名为OutType的结构.在我的C++代码中,我声明: OutType*Out ; 并将其传递给某个函数LName(.....,OutType*Out) 现在,在C库中,LName接受参数Out,并调用名为SaveH的函数,其中Out是返回值(Out = SaveH(... ))并且在SaveH中,Out被malloc化为OutType returnOut =(OutType*)malloc(1,sizeof(OutType)); 据我所知,Out完全是malloc'ed,在LName函数中我可以得到分配的内存区域的地址.但是当我返回到我的C++代码,我调用LName并传递Out作为参数时,该参数始终为0作为地址.如果我保持一切相同,但只是更改SaveH,以便Out不是返回值,而是一个参数如SaveH(....,OutType*Out)并在传递一切之前在C++代码中分配该值很好.这是正常的吗?使用C++代码在C库中分配指针有问题吗?谢谢
在ScottGu的博客中,他展示了如何覆盖Linq to SQL类的方法,以便可以在.NET端自定义地覆盖对数据的修改.
http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx(插入/更新/删除部分的自定义SQL表达式) )
有没有办法在EF中实现相同的功能?
我尝试在QT中创建一个线程,可以声明,创建和启动它,但它不会触发Run函数(我可以看到通过在该函数中放置一个断点)
VT.h:
class VT : public QThread
{
public:
void Run();
};
Run Code Online (Sandbox Code Playgroud)
VT.cpp
void VT::Run()
{
..
}
Run Code Online (Sandbox Code Playgroud)
并在main.cpp中:
VT vt;
vt.Start();
// starts ok but no action
Run Code Online (Sandbox Code Playgroud)
我在VT.h中包含其他标题,它们是否阻止?有些不妥.问题?