我的应用程序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()真的解决了它.直到现在都没有冻结.
我有大量用户提交的内容.它是HTML,可能包含URL.其中一些<a>已经是(如果用户是好的)但有时用户是懒惰的,只需输入www.something.com或最好是http://www.something.com.
我找不到一个像样的正则表达式来捕获URL但忽略那些紧靠双引号或'>'的权利.谁有一个?
说一堂课
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已经可用,但我不知道我应该在哪里实现它的逻辑.
我们有一个系统同时插入来自多个站的大量数据,同时还暴露了数据查询接口.架构看起来像这样(抱歉格式不佳):
[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提示结合起来,以便:
这可能是非常矛盾的目标,可能需要高事务隔离级别,但我对所有技巧和优化感兴趣,以实现对插入和选择的高响应性.我很乐意详细说明是否需要更多细节来清除更多调整和技巧.
更新:只需为将来的回复添加更多信息.我们最初在具有5+ TB存储空间的SAN网络上运行SQL Server 2005(可能在六个月内发布).我不确定SAn设置的是什么类型的RAID,以及我们可用的确切磁盘数量.
我想在不同的目录中扩展一个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的相对路径(以某种方式)以进行扩展.
我担心我不能这样做,但我希望有一些我错过的东西.
我有一个包含行的表格样式页面.每行都有一个复选框.我可以选择所有/多个复选框,然后单击"提交",每个行的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) WPF中是否有任何向导类型控件?我需要功能,我可以前进和后退,并使用选项卡选择一个特定项目,将显示嵌套项目的详细信息.我可以使用TabControl控件,但选项卡项是动态的,所以我不能将该区域嵌套在选项卡项中.
下面的示例抛出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)
我怎样才能以更好的方式重写这个?我猜一个递归的解决方案?
我的查询是:
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**
获得具有List类型字段的实体的最智能方法是什么?
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) c# ×4
.net ×2
linq ×2
.net-2.0 ×1
ajax ×1
asp.net ×1
cfc ×1
coldfusion ×1
concurrency ×1
data-binding ×1
html ×1
java ×1
jpa ×1
jquery ×1
locking ×1
optimization ×1
orm ×1
php ×1
regex ×1
sql-server ×1
transactions ×1
url ×1
winforms ×1
wizard ×1
wpf ×1