见下面的程序.我用函数abc启动一个新的线程x,然后我做了一些更长的任务.为什么x只在end sub之后开始?不应该在睡觉前立即开始吗?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As New Threading.Thread(AddressOf abc)
x.SetApartmentState(Threading.ApartmentState.MTA)
x.Start()
System.Threading.Thread.Sleep(5000)
End Sub
Sub abc()
For i As Integer = 0 To 10 Step 1
Me.lblStatus.Text = "Testing DB connection ( timeout in: " + i.ToString() + "s )"
'Me.StatusStrip1.Invoke(
MsgBox(i.ToString)
System.Threading.Thread.Sleep(1000)
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑:
解决方案是这样的:
(A)将连接尝试和超时倒计时放入单独的线程中.
(B)像这样更新UI:
If Me.InvokeRequired Then
Me.Invoke(pUpdateStatusMessage, "Successfully connected.")
Else
UpdateStatusMessage("Successfully connected.")
End If
Run Code Online (Sandbox Code Playgroud)
使用全局声明,因此不需要传递参数:
Delegate Sub t_pUpdateStatusText(ByVal strMessage As String)
Public …Run Code Online (Sandbox Code Playgroud) 问题:我得到一个异常,将此类序列化为nHibernate xml文件({"无法确定类型:System.Drawing.Image,System.Drawing,列:NHibernate.Mapping.Column(Settings)"}).
如何将System.Drawing.Image映射到nHibernate?什么MS-SQL dbtype将被使用?
using System;
using System.Collections.Generic;
using System.Text;
namespace nhDBapi.Tables
{
[NHibernate.Mapping.Attributes.Class(Name = "nhDBapi.Tables.clsSettings, nhDBapi", Table = "lsSettings")]
public class clsSettings
{
[NHibernate.Mapping.Attributes.Id(Name = "Settings", Column = "Settings", TypeType = typeof(System.Drawing.Image))]
public System.Drawing.Image Settings;
} // End partial class lsSettings
} // End Namespace nhDBapi.Tables
Run Code Online (Sandbox Code Playgroud) 问题:我有一个ini文件,在向其添加信息之前我需要清除它.
不幸的是,如果我只删除文件,权限也会消失.
有没有办法删除文件的内容而不删除文件?
问题:我有一个安装程序,它会随程序安装一些本机dll.dll位于一个单独的文件夹中,我将其添加到路径环境变量中.
这已成功完成,如果我检查Windows系统设置,变量将显示在路径中.
但是,如果我启动命令行程序/服务,它说dll未找到...
我用set命令检查环境变量路径,我的文件夹不在那里.
如果我做
SET path = %path%;my/folder/here/
Run Code Online (Sandbox Code Playgroud)
然后启动我的程序,然后它的工作原理.
根据这篇MS KB文章,这是因为需要重新启动计算机.
除非我这样做
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "Environment", SMTO_ABORTIFHUNG, 5000, &dwReturnValue);
Run Code Online (Sandbox Code Playgroud)
现在我只使用下面的代码,但错误消息仍然存在.%path%中的我的文件夹拼写正确,我检查了一下.
我究竟做错了什么 ?
' http://www.pinvoke.net/default.aspx/Enums/SendMessageTimeoutFlags.html '
<Flags()> _
Public Enum SendMessageTimeoutFlags
SMTO_NORMAL = 0
SMTO_BLOCK = 1
SMTO_ABORTIFHUNG = 2
SMTO_NOTIMEOUTIFNOTHUNG = 8
End Enum
' http://ghouston.blogspot.com/2005/08/how-to-create-and-change-environment.html '
Public Const HWND_BROADCAST As Integer = &HFFFF
Public Const WM_SETTINGCHANGE As Integer = &H1A
' http://pinvoke.net/default.aspx/user32.SendMessageTimeout '
<System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function SendMessageTimeout(ByVal windowHandle As IntPtr, ByVal Msg …Run Code Online (Sandbox Code Playgroud) 仅当.NET Framework版本小于特定数字时才可以加载引用的程序集吗?
我在.NET 2.0上使用自制的LINQ库,但如果框架是3.5+,它应该使用M $ LINQ库,而忽略自制的库.
编辑:
这是我的图书馆:http:
//linq4you.codeplex.com/
这段代码出了什么问题?
我总是得到一个
从不同步的代码块调用对象同步方法
例外
System.Threading.Monitor.Exit(m_sqlConnection)
Run Code Online (Sandbox Code Playgroud)
但是......无论我将Monitor语句放在try-catch-finally-block内部还是外部,无论如何组合,我总是得到这个异常.
也就是说,在我编译代码之后.如果我在获得第一个异常后让它再次运行,它运行正常...它总是在重新编译之后......
Public Shared Function GetDataTable(ByRef strSQL As String, ByRef dt As System.Data.DataTable, Optional ByRef strTableName As String = "ThisTable") As Integer
Dim daQueryTable As System.Data.SqlClient.SqlDataAdapter = Nothing
Try
System.Threading.Monitor.TryEnter(m_sqlConnection, 5000)
If isDataBaseConnectionOpen() = False Then OpenSQLConnection()
daQueryTable = New System.Data.SqlClient.SqlDataAdapter(strSQL, m_sqlConnection)
dt = New System.Data.DataTable(strTableName)
daQueryTable.Fill(dt)
Catch ex As Exception
Log(ex)
Return -1
Finally
m_sqlConnection.Close()
System.Threading.Monitor.Exit(m_sqlConnection)
daQueryTable.Dispose()
daQueryTable = Nothing
End Try
Return dt.Rows.Count
End Function ' GetDataTable
Run Code Online (Sandbox Code Playgroud)
C#版本:
public static int GetDataTable(ref string …Run Code Online (Sandbox Code Playgroud) 问题:我想测试PostgreSQL中的if语句:
IF (SELECT COUNT(*) FROM pg_language WHERE lanname = 'plpgsql') > 0 THEN
PRINT 'Good'
ELSE
PRINT 'Bad'
END IF;
Run Code Online (Sandbox Code Playgroud)
现在这会在IF处抛出错误.
据我所知,这是因为我需要使用plpgsql来使用if,print和variables.
到目前为止,我可能还必须使用SELECT而不是print.
在将此语句执行到plpgsql之前,如何切换语言?
我想先测试它,然后我把它放在存储过程中.用变量等测试代码
编辑:
解决方案:
DO LANGUAGE plpgsql $$
BEGIN
IF (SELECT COUNT(*) FROM pg_language WHERE lanname = 'plpgsql') > 0 THEN
RAISE NOTICE 'GOOD';
ELSE
RAISE NOTICE 'BAD';
END IF;
END;
$$;
Run Code Online (Sandbox Code Playgroud) 我试图解释101.10的价值差异.
303'300'000/12约为25'275'000.
但是,根据MS-SQL,它是25'274'898.90.
考虑这个(愚蠢的)SQL语句:
SELECT
303300000.00/12.0 AS a
,1.0/12.0*303300000.00 AS b
,1.0/12.0 AS omg
,1.0/CAST(12.0 AS float) AS expected
,0.083333*303300000.0 AS r1
,0.083333333333333300 * 303300000.0 AS r2
Run Code Online (Sandbox Code Playgroud)
我以为自从我写了1.0/12.0后它就会变成浮动
(这本身是愚蠢的,但这是另一个故事),
但显然,它是decimal (8,6)
CREATE VIEW dbo._Test
AS
SELECT 1.0/12.0 as xxx
SELECT
COLUMN_NAME
,DATA_TYPE
,NUMERIC_PRECISION
,NUMERIC_SCALE
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '_Test'
DROP VIEW dbo._Test
Run Code Online (Sandbox Code Playgroud)
这种疯狂有什么理由吗?
它如何确定精度?
有没有强制浮动的符号,而不需要演员声明?
如果我在PostgreSQL上运行相同的查询,pg就是正确的...
使用波纹管代码,我在X11上激活一个窗口.
我正在使用FindWindow来获取窗口句柄,它工作得很好.然后我想把指定的窗口放在前台.为此,我使用XRaiseWindow.
XRaiseWindow(display, wdThisWindow);
Run Code Online (Sandbox Code Playgroud)
但是,XRaiseWindow在某些窗口上不起作用(很多,但不是全部).我想这是因为他们的override_redirect WindowAttribute没有设置为true.所以我使用XChangeWindowAttributes将此属性设置为true.现在,XRaiseWindow将所有窗口都带到了顶部.问题是,EyeOfGnome(图片浏览器)和所有其他应用程序都丢失了顶部的标题栏...(你知道,右边有一个关闭控件的那个......).更糟糕的是,窗户不再出现在后台......
我想如果我在提升窗口后设置了override_redirect属性,问题就会消失.但是......问题现在已经从所有应用程序(例如gnome-terminal)消失了 - 除了EyeOfGnome(图片查看器)......
我错过了什么,或者这是一个EyeOfGnome问题,还是一般的GTK问题?
这是导致问题的部分代码:
XSetWindowAttributes xswa;
xswa.override_redirect = True;
XChangeWindowAttributes(display, wdThisWindow, CWOverrideRedirect, &xswa);
XRaiseWindow(display, wdThisWindow);
xswa.override_redirect = False;
XChangeWindowAttributes(display, wdThisWindow, CWOverrideRedirect, &xswa);
XSetInputFocus(display, wdThisWindow, RevertToNone, CurrentTime);
Run Code Online (Sandbox Code Playgroud)
这是完整的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
// Info: xwininfo
// I am compiling using
// gcc -o activate activate.c -L/usr/X11R6/lib -lX11
// ERROR HANDLER, GENERIC
static int ErrorHandler (Display *display, XErrorEvent *error)
{
//printf ("\r\n error! \r\n");// gcc …Run Code Online (Sandbox Code Playgroud) 我正在寻找火鸟 - 相当于:
SELECT 'abc' AS abc, 123 AS def, '20110101' AS dt
Run Code Online (Sandbox Code Playgroud)
每当我这样做
SELECT 'whatever' as xxx
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息.