小编Ted*_*nce的帖子

C#从另一个线程调用form.show()

如果我form.show()从另一个线程调用WinForms对象,表单将抛出异常.我可以通过何种方式向主应用程序线程添加新的可见表单?否则,如何在不停止当前正在执行的线程的情况下打开表单?

这是我的示例代码.我试图启动一个线程,然后在该线程中执行一些工作.随着工作的进展,我将展示表格.

public void Main()
{
    new Thread(new ThreadStart(showForm)).Start();
    // Rest of main thread goes here...
}

public void showForm() 
{
    // Do some work here.
    myForm form = new myForm();
    form.Text = "my text";
    form.Show();
    // Do some more work here
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading .net-3.5 winforms

19
推荐指数
2
解决办法
5万
查看次数

可以使用webkitdotnet在C#中通过WebKit浏览器下载文件吗?

我正在使用WebKitDotNet来模拟和自动化Web浏览器.这真的很漂亮,并且在大多数方面都有效.但是,当我尝试实现此代码时,WebKit不会触发下载:

WebKitBrowser _b = null;

private void button1_Click(object sender, EventArgs e)
{
    _b = new WebKitBrowser();
    _b.DownloadBegin += new FileDownloadBeginEventHandler(b_DownloadBegin);
    _b.Error += new WebKitBrowserErrorEventHandler(_b_Error);
    _b.AllowDownloads = true;
    _b.Navigate("http://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo.zip/download");
}

void _b_Error(object sender, WebKitBrowserErrorEventArgs e)
{
    MessageBox.Show("error!");
}

void b_DownloadBegin(object sender, FileDownloadBeginEventArgs e)
{
    MessageBox.Show("hi");
}
Run Code Online (Sandbox Code Playgroud)

触发"错误"和"DownloadBegin"事件.我希望他们中至少有一个能这样做 - 有没有我缺少的设置?

编辑:我知道这是一个老问题,但这是更新.当我写这个问题时,我试图自动化一个需要人类的过程 - 每天一次 - 登录网站,提供凭据,然后单击下载链接.我们希望能够以编程方式做到这一点,以减轻负责这项工作的穷人的单调.

不幸的是,WebKitDotNet没有成功完成这项任务.虽然,在基于webkit的浏览器中,您可以单击链接并触发下载,但在嵌入式WebKitDotNet中单击该链接却什么也没做.我的猜测是WebKitDotNet中的某些东西丢失了这个事件.如果有人想测试这个,你可以使用Sourceforge下载链接进行测试.

我团队中的一个人最终通过使用名为"IMacros"的Internet Explorer自动化工具解决了这个问题.我们之所以选择这个产品,是因为1)我们可以保证在每台运行程序的计算机上安装IE,2)IMacros可以正确地从网站接收事件并触发文件下载.

c# webkit

11
推荐指数
1
解决办法
3074
查看次数

将SSIS包转换为.NET应用程序?

我被要求接管一段时间前写的SSIS包的所有权.它当然可以进入并修改,编辑和升级这个软件包,但对于软件包的工作量来说,它似乎也非常麻烦.

我的任务大致如下:筛选包,找到特定表中某些特定列的使用情况,更改它们以匹配最新的数据库更改集,并写出一些额外的日志记录数据,以帮助团队诊断任何特定问题.

这对我来说似乎令人生畏,因为SSIS包中包含大约3兆字节的文本,SQL语句和极其简单(但很冗长)的代码路径.我已经花了一段时间双击每个SSIS对象并浏览其设置以查看我是否可以发现我被要求维护的列,并且SSIS不断抛出连接错误(正确的是,因为我的开发环境被阻止了从生产数据库中删除).

我真的很想考虑将这个SSIS包转换为.NET应用程序,但是我找不到任何可以帮助我这样做的工具.

有没有人建议维护这个SSIS包或将其转换为适当的应用程序?

c# sql-server maintenance ssis

5
推荐指数
1
解决办法
4491
查看次数

C#函数将脚/英寸/米/厘米/毫米的文本输入转换为数值

我正在编写一个函数来获取速记值并将它们转换为标准化的数字格式.是否有任何标准代码可以对任意测量文本进行"最佳"转换,如果文本有效则将其转换为数字测量?

我想我正在寻找像bool TryParseMeasurement(string s,out decimal d)之类的东西.有谁知道这样的功能?

以下是我看到的一些输入值的示例:

帝国

  • 6英寸
  • 6英寸
  • 6"
  • 4英尺2英寸
  • 4'2"
  • 4'2"
  • 3英尺
  • 3'
  • 3'
  • 3英尺
  • 3ft10in
  • 3英尺13英寸(应转换为4英尺1英寸)

Metricc

  • 1米
  • 1.2米
  • 1.321米
  • 1米
  • 481毫米

c# units-of-measurement

4
推荐指数
1
解决办法
1万
查看次数

可以插入表参数,还可以检索标识值?

我正在尝试使用高性能表参数方法(http://www.altdevblogaday.com/2012/05/16/sql-server-high-performance-inserts/)插入记录,我很好奇它是否是可以检索我插入的每个记录的标识值.

目前,答案似乎是否定 - 我插入数据,然后检索身份值,但它们不匹配.具体来说,它们在大约75%的时间内不匹配,并且它们以不可预测的方式不匹配.以下是一些复制此问题的代码:

// Create a datatable with 100k rows
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("item_id", typeof(int)));
dt.Columns.Add(new DataColumn("comment", typeof(string)));
for (int i = 0; i < 100000; i++) {
    dt.Rows.Add(new object[] { 0, i.ToString() });
}

// Insert these records and retrieve back the identity
using (SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=testdb;Integrated Security=True")) {
    conn.Open();
    using (SqlCommand cmd = new SqlCommand("proc_bulk_insert_test", conn)) {
        cmd.CommandType = CommandType.StoredProcedure;

        // Adding a "structured" parameter allows you to …
Run Code Online (Sandbox Code Playgroud)

c# sql-server performance

2
推荐指数
1
解决办法
1720
查看次数