我试图推迟向我的主表单添加控件,目标是加快它的开始时间.好吧,我运行以下异常:
跨线程操作无效:控制从其创建的线程以外的线程访问的"Form1".
我试图在一个较小的例子上简单地解决问题,但问题仍然存在.这是我的代码:
using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace AddConrolFromAnotherThread {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void AddButton() {
if(this.InvokeRequired){
this.Invoke(new MethodInvoker(this.AddButton));
}
Random random = new Random(2);
Thread.Sleep(20);
Button button = new Button();
button.Size = new Size(50,50);
button.Location =
new Point(random.Next(this.Width),random.Next(this.Height));
this.Controls.Add(button);
}
private void buttonStart_Click(object sender, EventArgs e) {
Thread addControlThread =
new Thread(new ThreadStart(this.AddButton));
addControlThread.Start();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我确实使用了Invoke方法并检查了InvokeRequiered是否为true,但InvokeRequiered保持"true".我真的不明白.至少我会期望StackOverflow异常,因为这是一个递归调用.
所以,如果有人遇到类似问题,请告诉我,我做错了什么?
我是 JSONPath 的新手,任何帮助表示赞赏。我正在尝试根据其同级值过滤数据。
我的 JSON 示例:
[
{
"id": "10300",
"name": "NAME1"
},
{
"id": "10500",
"name": "NAME2"
}
]
Run Code Online (Sandbox Code Playgroud)
我想通过名称查询 id。我试过这样的事情,但没有运气:
$..id[?(@name=='NAME1')]
Run Code Online (Sandbox Code Playgroud)
我确定我错过了一些微不足道的东西。
我试图破解我的PL/SQL代码.我们创建了打开并获取游标的PL/SQL过程.根据我们的标准,我们创建了一个动态SQL语句,但我们无法注入OR 1 = 1条件.
我做了一个http://sqlfiddle.com/#!4/a62a3/5演示,你可以尝试注入代码.
CREATE FUNCTION get_documents (p_document_id IN DOCUMENTS.DOCUMENT_ID%TYPE)
RETURN SYS_REFCURSOR
AS
p_rs SYS_REFCURSOR;
BEGIN
DBMS_OUTPUT.PUT_LINE('------ INPUT VALUES ------');
DBMS_OUTPUT.PUT_LINE('p_document_id: ' || p_document_id);
OPEN p_rs FOR
SELECT DOCUMENT_ID, '(' || MY_FIELD || ')' FROM DOCUMENTS WHERE DOCUMENT_ID = '' || p_document_id || '';
RETURN p_rs;
END;
Run Code Online (Sandbox Code Playgroud)
我们尝试在p_document_id参数中注入代码.我们将其设置为:
document_refcur_local:=get_documents('10'' OR 1=1; -- ');
Run Code Online (Sandbox Code Playgroud)
但我们无法选择所有记录.能不能让我知道我做错了什么?
这些天我在玩多播,遇到了一些我不明白的奇怪事情。
我创建了一个聊天多播客户端,一切似乎都正常。之后,我阅读了一些 linux 文档并发现通过 ping 224.0.0.1 应该从加入某个多播组的所有节点返回我的回复。我在 xp 和 win7 机器上试过。两者的行为是相同的。我的客户似乎只加入我定义的组 (224.0.19.1)。它不加入 224.0.0.1 组。
来自wireshark:[source ip] 224.0.0.22 IGMPv3 54 Membership Report / Join group 224.0.19.1 for any source
这是我设置套接字的方式:
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));
m_socket.Bind(ipep);
IPAddress ip = IPAddress.Parse(mcastGroup);
m_socket.SetSocketOption(
SocketOptionLevel.IP, SocketOptionName.AddMembership,
new MulticastOption(ip, IPAddress.Any));
Run Code Online (Sandbox Code Playgroud)
然后我检查了netsh:
C:\Users\user1>netsh interface ip show joins
Interface 1: Loopback Pseudo-Interface 1
Scope References Last Address
---------- ---------- ---- ---------------------------------
0 2 Yes 239.255.255.250
Interface 11: LAN
Scope References Last Address
---------- ---------- ---- --------------------------------- …Run Code Online (Sandbox Code Playgroud)