问题列表 - 第2544页

Invoke()正在阻塞

我的应用程序GUI有时会停止重绘.有许多线程正在触发各种事件(如计时器或网络数据准备等).还有很多控件正在订阅这些事件.因此,所有事件处理程序都会播放InvokeRequired/Invoke游戏.现在我发现当GUI冻结时,很多线程都在等待Invoke()返回.看起来消息泵停止泵送.处理程序看起来像这样:

private void MyEventHandler( object sender, EventArgs e ) {
    if ( InvokeRequired ) {
        Invoke( new EventHandler( MyEventHandler ), sender, e );
        return;
    }

    SetSomeStateVariable();
    Invalidate();
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

解决方案:BeginInvoke().看起来如果你有很多CrossThread-Events,你应该总是使用BeginInvoke()......

谢谢.

谢谢大家.

编辑:看起来BeginInvoke()真的解决了它.直到现在都没有冻结.

.net c# .net-2.0 winforms

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

需要一个好的正则表达式将URL转换为链接,但只留下现有的链接

我有大量用户提交的内容.它是HTML,可能包含URL.其中一些<a>已经是(如果用户是好的)但有时用户是懒惰的,只需输入www.something.com或最好是http://www.something.com.

我找不到一个像样的正则表达式来捕获URL但忽略那些紧靠双引号或'>'的权利.谁有一个?

html php regex url

20
推荐指数
3
解决办法
7773
查看次数

包含<T>()以及如何实现它

说一堂课

Person  
+Name: string  
+Contacts: List<Person>
Run Code Online (Sandbox Code Playgroud)

我希望能够检查某人是否具有某个名称的联系人,而无需创建虚拟Person实例.

person.Contacts.Contains<string>("aPersonName");
Run Code Online (Sandbox Code Playgroud)

这应该检查联系人列表中的所有人是否他们的Name.Equals("aPersonName"); 我看到有一个Contains已经可用,但我不知道我应该在哪里实现它的逻辑.

c# linq

3
推荐指数
1
解决办法
6332
查看次数

事务级别,nolock/readpast和并发

我们有一个系统同时插入来自多个站的大量数据,同时还暴露了数据查询接口.架构看起来像这样(抱歉格式不佳):

[SyncTable]
  SyncID
  StationID
  MeasuringTime


[DataTypeTable]
  TypeID
  TypeName


[DataTable]
  SyncID
  TypeID
  DataColumns...
Run Code Online (Sandbox Code Playgroud)

数据插入是在"同步"中完成的,并且像这样(我们只将数据插入系统,我们从不更新)

INSERT INTO SyncTable(StationID, MeasuringTime) VALUES (X,Y); SELECT @@IDENTITY

INSERT INTO DataTable(SyncID, TypeID, DataColumns) VALUES 
  (SyncIDJustInserted, InMemoryCachedTypeID, Data)
  ... lots (500) similar inserts into DataTable ...
Run Code Online (Sandbox Code Playgroud)

查询就像这样(对于给定的站点,测量时间和数据类型)

SELECT SyncID FROM SyncTable WHERE StationID = @StationID 
                               AND MeasuringTime = @MeasuringTime 
SELECT DataColumns FROM DataTable WHERE SyncID = @SyncIDJustSelected
                                  AND DataTypeID = @TypeID
Run Code Online (Sandbox Code Playgroud)

我的问题是如何将插入的事务级别和查询的NOLOCK/READPAST提示结合起来,以便:

  1. 我们在系统中最大化并发性,同时支持插入(我们需要存储大量数据,一秒钟内高达2000+记录)
  2. 查询仅从"提交"同步返回数据(我们不希望结果集具有半插入同步或由于跳过锁而与某些跳过的条目同步)
  3. 我们不关心查询中是否包含"最新"数据,我们更关心"实时"和最新数据的一致性和响应性

这可能是非常矛盾的目标,可能需要高事务隔离级别,但我对所有技巧和优化感兴趣,以实现对插入和选择的高响应性.我很乐意详细说明是否需要更多细节来清除更多调整和技巧.

更新:只需为将来的回复添加更多信息.我们最初在具有5+ TB存储空间的SAN网络上运行SQL Server 2005(可能在六个月内发布).我不确定SAn设置的是什么类型的RAID,以及我们可用的确切磁盘数量.

sql-server concurrency optimization locking transactions

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

使用相对路径扩展CFC

我想在不同的目录中扩展一个CFC,我有几个选项,但无法弄清楚如何执行此操作:

A)使用动态映射(这必须是基于站点的动态,例如对于现场站点,它将是cfc.myPackage.MyCFC,但在开发站点上它将是myCfcRoot.myPackage.MyCFC) - 我试过将表达式放入extends位,但很明显CF不喜欢它,例如:

<cfcomponent name="MyComponent" extends="#config.cfcRoot#.BaseComponent">
Run Code Online (Sandbox Code Playgroud)

要么

<cfcomponent name="MyComponent" extends="#GetRealPath(../BaseComponent.cfc)#">
Run Code Online (Sandbox Code Playgroud)

B)提供CFC的相对路径(以某种方式)以进行扩展.

我担心我不能这样做,但我希望有一些我错过的东西.

coldfusion cfc

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

如何知道所有ajax调用何时完成

我有一个包含行的表格样式页面.每行都有一个复选框.我可以选择所有/多个复选框,然后单击"提交",每个行的Jquery ajax调用是什么.

基本上我有一个每行的表单,我迭代所有检查的行,并提交该表单进行jquery ajax调用.

所以我有一个按钮:

       $("input:checked").parent("form").submit();
Run Code Online (Sandbox Code Playgroud)

然后每一行都有:

            <form name="MyForm<%=i%>" action="javascript:processRow(<%=i%>)" method="post" style="margin:0px;">
                <input type="checkbox" name="X" value="XChecked"/>
                <input type="hidden" id="XNumber<%=i%>" name="X<%=i%>" value="<%=XNumber%>"/>
                <input type="hidden" id="XId<%=i%>" name="XId<%=i%>" value="<%=XNumber%>"/>
                <input type="hidden" id="XAmt<%=i%>" name="XAmt<%=i%>" value="<%=XAmount%>"/>
                <input type="hidden" name="X" value="rXChecked"/>
            </form>
Run Code Online (Sandbox Code Playgroud)

此表单提交到processRow:

   function processRow(rowNum)
   {
        var Amount = $('#XAmt'+rowNum).val();
        var XId = $('#XId'+rowNum).val();
        var XNum = $('#OrderNumber'+rowNum).val();
        var queryString = "xAmt=" + "1.00" + "&xNumber=" + OrdNum + "&xId=" + xId;


        $('#coda_'+rowNum).removeClass("loader");
        $('#coda_'+rowNum).addClass("loading");


        $.ajax({
          url: "x.asp",
          cache: false,
          type:  "POST",
          data:  queryString,
          success: function(html){
            $('#result_'+rowNum).empty().append(html); …
Run Code Online (Sandbox Code Playgroud)

ajax jquery

74
推荐指数
3
解决办法
8万
查看次数

WPF中是否有向导控件?

WPF中是否有任何向导类型控件?我需要功能,我可以前进和后退,并使用选项卡选择一个特定项目,将显示嵌套项目的详细信息.我可以使用TabControl控件,但选项卡项是动态的,所以我不能将该区域嵌套在选项卡项中.

wpf wizard

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

如何在消费时将项目添加到集合中?

下面的示例抛出InvalidOperationException,"Collection已被修改;枚举操作可能无法执行".执行代码时.

var urls = new List<string>();
urls.Add("http://www.google.com");

foreach (string url in urls)
{
    // Get all links from the url
    List<string> newUrls = GetLinks(url);

    urls.AddRange(newUrls); // <-- This is really the problematic row, adding values to the collection I'm looping
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能以更好的方式重写这个?我猜一个递归的解决方案?

.net c#

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

将我的linq查询结果集添加到数据集c#asp.net 3.5

我的查询是:

var query1 = from u in dc.Usage_Computers.AsEnumerable
             where u.DomainUser == s3
             orderby u.OperationTime descending
             select new
             {
                 u.ProgramVersion,
                 u.OperationTime,
                 u.IPaddress,
                 u.ComputerName,
                 u.DomainUser,
                 u.OnNetwork,
                 Operation = u.Operation == 1 ? "Login" :
                             u.Operation == 2 ? "Logoff" :
                             u.Operation == 3 ? "AGNS Connect" :
                             u.Operation == 4 ? "AGNS Disconnect" :
                             "None"
             };

GridView1.DataSource = query1;
GridView1.DataBind();
Run Code Online (Sandbox Code Playgroud)

在使用gridview进行数据绑定后,我想将结果集"query1"添加到数据集或数据表中.任何人都可以告诉我如何做到这一点?

我在这里看到另一篇文章有​​同样的问题,但答案在我的作品中没有用...

**注意:我使用VS 2008**

c# linq asp.net data-binding

3
推荐指数
1
解决办法
6247
查看次数

如何在JPA中持久化List <String>类型的属性?

获得具有List类型字段的实体的最智能方法是什么?

Command.java

package persistlistofstring;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Persistence;

@Entity
public class Command implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;
    @Basic
    List<String> arguments = new ArrayList<String>();

    public static void main(String[] args) {
        Command command = new Command();

        EntityManager em = Persistence
                .createEntityManagerFactory("pu")
                .createEntityManager();
        em.getTransaction().begin();
        em.persist(command);
        em.getTransaction().commit();
        em.close();

        System.out.println("Persisted with id=" + command.id);
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码生成:

> Exception in thread "main" javax.persistence.PersistenceException: No Persistence …
Run Code Online (Sandbox Code Playgroud)

java orm jpa

147
推荐指数
11
解决办法
22万
查看次数