我有一个线程,在我们的(旧)SQL服务器上查找数据.
当数据进入时,我将信息发布到模态对话框 - 在进行所有这些处理时,用户不能也不应该做任何其他事情.模态对话框只是让他们看到我正在做某事并阻止他们同时运行另一个查询.
有时(很少)当代码调用SQL服务器时,服务器没有响应(IT将其关闭以进行维护,LAN线被切断,或者PC不在网络上)或执行查询的人时间不多了.因此,模态对话框确实有一个取消按钮.
Thread对象(System.Threading.Thread)有IsBackground=true.
当有人点击取消时,我会调用我的KillThread方法.
注意:我不能在此类中使用BackgroundWorker组件,因为它与某些Windows Mobile 5代码共享,而WM5没有BackgroundWorker.
void KillThread(Thread th) {
if (th != null) {
ManualResetEvent mre = new ManualResetEvent(false);
Thread thread1 = new Thread(
() =>
{
try {
if (th.IsAlive) {
//th.Stop();
// 'System.Threading.Thread' does not contain a definition for 'Stop'
// and no extension method 'Stop' accepting a first argument of type
// 'System.Threading.Thread' could be found (are you missing a using
// directive or an assembly reference?) …Run Code Online (Sandbox Code Playgroud) 对于我的应用程序正在运行的任何显示,Dpi点与像素如何相关?
int points;
Screen primary;
public Form1() {
InitializeComponent();
points = -1;
primary = null;
}
void OnPaint(object sender, PaintEventArgs e) {
if (points < 0) {
points = (int)(e.Graphics.DpiX / 72.0F); // There are 72 points per inch
}
if (primary == null) {
primary = Screen.PrimaryScreen;
Console.WriteLine(primary.WorkingArea.Height);
Console.WriteLine(primary.WorkingArea.Width);
Console.WriteLine(primary.BitsPerPixel);
}
}
Run Code Online (Sandbox Code Playgroud)
我现在有我需要的所有信息吗?
我可以使用以上任何信息来找出1200像素有多长吗?
标题可能措辞错误,所以请告诉我正确的用语.
我有一个名为DAL_Base的基类,它接受泛型类型T.该类型T来自我们的Business Objects层中的许多类,并且每个类都具有相应的数据访问层.
DAL_Base接受允许我指定存储过程名称和参数的参数,用于调用选择,插入和更新记录的方法.
我目前似乎坚持的是,我似乎无法找到一种方法来实例化我的DAL_Base的新实例,它需要初始化各种变量.
部分上市:
public class DAL_Base<T> where T : IDisposable, new() {
public DAL_Base<T>() { // <= ERROR HERE
// initialize items that will be used in all derived classes
}
}
Run Code Online (Sandbox Code Playgroud)
VS2010给出的错误是:
无效的标记'('在类,结构或接口成员声明中
我试过创建没有括号的构造函数,但这也没用.
当我搜索时,我似乎能够返回的是创建我的泛型类型的实例的方法T.这很容易找到怎么做!
MSDN的C#Generics简介似乎也没有涵盖这一点.
我在VS2008中覆盖了我的Label控件的OnPaint方法:
void Label_OnPaint(object sender, PaintEventArgs e) {
base.OnPaint(e);
dim lbl = sender as Label;
if (lbl != null) {
string Text = lbl.Text;
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
if (myShowShadow) { // draw the shadow first!
e.Graphics.DrawString(Text, lbl.Font, new SolidBrush(myShadowColor), myShadowOffset, StringFormat.GenericDefault);
}
e.Graphics.DrawString(Text, lbl.Font, new SolidBrush(lbl.ForeColor), 0, 0, StringFormat.GenericDefault);
}
}
Run Code Online (Sandbox Code Playgroud)
这有效,但我真的想知道如何垂直和水平居中文本.我听说过这种MeasureString()方法,但是我的"文本"使问题变得复杂,因为它可能包含分页符.
有人可以指导我如何做到这一点?
我有一个我作为C++ Win32应用程序创建的DLL.为了防止我的DLL中的名称损坏,我使用了以下定义的EXPORT定义:
#ifndef EXPORT
#define EXPORT extern "C" __declspec(dllexport)
#endif
EXPORT int _stdcall SteadyFor(double Par[], double Inlet[], double Outlet[]);
Run Code Online (Sandbox Code Playgroud)
为了编译这个代码,我不得不进入项目的属性并将C/C++设置Calling Convention为__stdcall(/ Gz)并设置Compile As为Compile as C++ Code(/ TP).
这在调试模式下工作,但释放模式正在抛出error C2059: syntax error: 'string'我的所有EXPORT函数 - 即使我已将Release模式设置配置为与Debug设置相同.
如何编译发布模式?
问候,
~Joe
(在Visual Studio 2008 Professional下开发)
编辑:
很多关于我的#define的评论,似乎没有引起任何问题.
为了消除这种混淆,我的头文件已被重写如下:
#ifndef coilmodel_h
#define coilmodel_h
extern "C" __declspec(dllexport) int _stdcall steadyFor(double Par[], double Inlet[], double Outlet[], char* FileIn, char* FileOut);
#endif
Run Code Online (Sandbox Code Playgroud)
这就是全部.
错误是:
描述 error C2059: syntax …
我正在运行Microsoft 101的LINQ示例,我对这个查询如何知道如何将正确的int值分配给正确的int字段感到困惑:
public void Linq12()
{
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var numsInPlace = numbers.Select((num, index) => new { Num = num, InPlace = (num == index) });
Console.WriteLine("Number: In-place?");
foreach (var n in numsInPlace)
{
Console.WriteLine("{0}: {1}", n.Num, n.InPlace);
}
}
Run Code Online (Sandbox Code Playgroud)
我在SO#336758中看到之前的例子中有错误,但更有可能的是我错过了一些东西.
有人可以解释一下这个以及编译器如何正确理解这些数据?
编辑:
好吧,我认为我的混淆来自LINQ扩展,它使Select功能可以工作.该Func键和两个INT参数IEnumerable<TResult> IEnumerable<int>.Select(Func<int,int,TResult> selector)是最有可能的关键,我不理解.

在我的 Windows Mobile 项目中,我添加了SQLite.Interop.066.DLL,设置 [ Build Action ] = [ Content ] 并设置 [ Copy to Output Directory ] = [ Copy if newer ]。
不过,之后我打开我的我的连接,我收到了未处理的Missing Method Exception消息“无法找到的PInvoke DLL“SQLite.Interop.DLL ”每当我尝试在执行读写器SQLiteCommand。
怎么了?


对于一个sql数据库管理员来说,这可能是一个简单的问题,但我是一个C#人,他只涉足数据库的时间足够长,以便在必要时让他们工作.
我有一个我设计的新数据库,其中只包含很少的数据.
我需要一个用于生成视图的查询,但我似乎永远无法理解如何/何时使用INNER与LEFT连接.
A Packet可以有多个Request条目(一个人请求5个不同的部分),每个Request条目可以有不同的Action条目(保留,取消,特殊订单,完整等).

我想创建一个生成以下数据表的查询:
SELECT
P.EmpID AS Requestor, P.DateStamp AS Submitted,
T.Description AS RequestType, L.Description AS Line, R.PartNo, R.Workorder, R.Qty,
RT.Description AS ReasonType, S.Description AS Status, A.EmpID AS Stator, A.DateStamp AS Stated, R.MTF
FROM Packet AS P
LEFT OUTER JOIN Request AS R ON (R.PacketID=P.ID)
LEFT OUTER JOIN Action AS A ON (A.RequestID=R.ID)
LEFT OUTER JOIN RequestType AS T ON (R.RequestTypeID=T.ID)
LEFT OUTER JOIN Line AS L ON (R.LineID=L.ID)
LEFT OUTER …Run Code Online (Sandbox Code Playgroud) 我有一个简单的队列来管理添加到我的应用程序中的项目.
来自Microsoft目前的Queue.Peek方法文档:

我认为Peek()的重点是拥有不会产生异常的代码.
我有一个DataGrid,我试图在单击一个ASP.NET 按钮时导出.

确切的错误是:
必须将带有'LinkButton'类型的控件'ctl00_body_RollupDG_ctl02_btnShowGLdetail'放在带有runat = server的表单标记内.
我在这里发现了类似的问题,但似乎都表明这是因为ASP.NET控件没有放在ContentPlaceHolder中,或者ContentPlaceHolder 没有放在RunAt Server表单中.
我有这两个,所以这不是这里的情况.
我的ExportExcelFile方法捕获RenderControl()处的HttpException(如上面的屏幕截图所示).该代码如下:
protected void ExportExcelFile(object Sender, EventArgs e) { //export to excel
var grdResults = (periodCriteria.SelectedValue == "year") ? RollupDG : QuarterDG;
var response = HttpContext.Current.Response;
response.Clear();
response.Charset = String.Empty;
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Disposition", "attachment; filename=GlBudgetReport.xls");
using (var sw = new StringWriter()) {
using (var htw = new HtmlTextWriter(sw)) {
grdResults.RenderControl(htw);
response.Write(sw.ToString());
response.End();
}
}
} …Run Code Online (Sandbox Code Playgroud)