我发现NPOI非常适合用C#编写Excel文件.
但我想在C#中打开,阅读和修改Excel文件.
我怎样才能做到这一点?
任何机构都知道Google Chrome等多进程C#应用程序的样本.
感谢帮助.
可能重复:
如何在后台线程运行时阻止Winforms UI
我正在使用C#WinForm应用程序
我在屏幕上有一个Save按钮,屏幕数据保存到数据库中.
当用户点击按钮应用程序进入数据库并保存数据时会发生什么.这需要一些时间.
但是,如果用户再次单击"保存"按钮,则会触发Click事件,当第一次单击返回主代码(保存数据库后)时,捕获的事件将被触发.
简而言之,当线程从第一个事件返回时,会捕获并触发click事件(我尝试了启用/禁用按钮的方案).
我怎样才能阻止这种行为.
此致,Akhil
@Jalal:我尝试了一些修改后的代码
private readonly object _userActivityLocker = new object();
private void btnSave_Click(object sender, EventArgs e)
{
if (System.Threading.Monitor.TryEnter(_userActivityLocker))
{
//note that any sub clicks will be ignored while we are here
try
{
DateTime dt = DateTime.Now;
Thread.Sleep(2000);
Debug.Print("FirstClick {0} Second Click {1}",dt.ToLongTimeString(), DateTime.Now.ToLongTimeString());
//here it is safe to call the save and you can disable the btn
Application.DoEvents();
}
finally
{
System.Threading.Monitor.Exit(_userActivityLocker);
//re-enable the btn if you disable it.
} …Run Code Online (Sandbox Code Playgroud) 我想从SQL存储过程中打印消息.
如果我使用SYNC选项执行cmd.ExecuteNonQuery连接会触发InfoMessage事件,但是当我使用ASYNC选项执行时,不会触发该事件.
在ASYNC执行时,我没有收到事件的原因吗?
这是我的代码:
class Program
{
static string connstring =
"data source = xyz;initial catalog = abc;user id=abc;password=abc;Asynchronous Processing=True";
static void Main(string[] args)
{
SqlConnection conn = new SqlConnection(connstring);
conn.InfoMessage += new SqlInfoMessageEventHandler(conn_InfoMessage);
SqlCommand cmd = new SqlCommand("TMP_PROC", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@TMP_ID", 1);
try
{
Console.WriteLine("connection open");
conn.Open();
Console.WriteLine("executing query");
//cmd.ExecuteNonQuery();
var result= cmd.BeginExecuteNonQuery(
p =>
{
try
{
var asyncCommand = p.AsyncState as SqlCommand;
Console.WriteLine("Execution Completed");
}
catch (Exception ex)
{
Console.WriteLine("Error:::{0}", ex.Message);
}
finally
{
conn.Close(); …Run Code Online (Sandbox Code Playgroud) 可能重复:
匿名类的返回类型是什么
我正在使用如下查询创建一个匿名类型:
来电代码:
var query= from p in _db.ExecuteDataSet(SQL).Tables[0].AsEnumerable()
select new {
ProductCode = p.Field<string>("PRODUCT_CODE"),
ProductName = p.Field<string>("PRODUCT_NAME")
};
foreach(var product in query)
{
WriteProduct(product);
}
Run Code Online (Sandbox Code Playgroud)
方法如下:
void WriteProduct(object prod)
{
// access the product
}
Run Code Online (Sandbox Code Playgroud)
我无法获得该WriteProduct方法的正确参数类型.请帮我.