我的应用程序通常使用WebRequest从网页获取数据,但是在获取时无法单击按钮等.我明白我必须使用线程/背景工作者,但我不能让它正常工作; 它不会使GUI更具响应性.
代码我想要应用某种线程,以便它不再使我的应用程序无响应:
public string SQLGet(string query)
{
string post = "q=" + query;
WebRequest request = WebRequest.Create("http://test.com");
request.Timeout = 20000;
request.Method = "POST";
byte[] bytes = Encoding.UTF8.GetBytes(post);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
WebResponse response = request.GetResponse();
requestStream = response.GetResponseStream();
StreamReader reader = new StreamReader(requestStream);
string ret = reader.ReadToEnd();
reader.Close();
requestStream.Close();
response.Close();
return ret;
}
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢,lc,我曾尝试过类似的东西.但是我使用这样的背景工作者的问题是; 如何将queryResult返回到调用的函数(在我的情况下是SQLGet,在你的情况下)是StartQuery?
在我的示例中,返回的字符串将用作内部调用字符串的void中的局部变量.
并且可能同时存在许多查询,因此我不希望冒险将其分配给全局变量.
我在类似的错误消息上看到了其他一些帖子,但找不到可以解决我的问题的解决方案.
我用TkInter稍微涉足并创建了一个非常简单的UI.该守则如下─
from tkinter import *
root = Tk()
def grabText(event):
print(entryBox.get())
entryBox = Entry(root, width=60).grid(row=2, column=1, sticky=W)
grabBtn = Button(root, text="Grab")
grabBtn.grid(row=8, column=1)
grabBtn.bind('<Button-1>', grabText)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我启动并运行UI.当我单击Grab按钮时,我在控制台上收到以下错误:
C:\Python> python.exe myFiles\testBed.py
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "myFiles\testBed.py", line 10, in grabText
if entryBox.get().strip()=="":
AttributeError: 'NoneType' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)
错误追溯到entryBox.
我敢肯定有人可能以前处理过这个问题.任何帮助表示赞赏.
假设我在Erlang中有2个进程,每个进程都有一个运行的接收循环.我想从ProcessB向ProcessA发送一个信号,但ProcessA实际上并不需要对它做任何事情.ProcessA只需要知道ProcessB发送了消息.
以下是我目前实施的方法:
receive
{message_from_process_b} ->
io:format("received a message from b", []);
end,
%% at this point I know that I've received the message from B.
Run Code Online (Sandbox Code Playgroud)
它工作正常.但出于好奇,如何在没有io:format线的情况下写出这个?(我需要进程A阻塞,直到收到来自B的消息,这是更大的Yaws/Yapp的一部分,服务器需要响应才能显示页面.)
我使用camel case,它的所有变量名,函数等的第一个字母都是小写的.但是班级名称是大写的.我应该使用:
class Foo
{
function foo()
{
}
}
Run Code Online (Sandbox Code Playgroud)
要么 :
class Foo
{
function Foo()
{
}
}
Run Code Online (Sandbox Code Playgroud)
哪个更好的约定?我糊涂了.
我想使用一些独特的许可系统.我决定使用Win32_Processor管理类的ProcessorID.
我尝试了两种不同系统,具有相同的处理器类型.
它显示了两个系统的相同处理器ID.我正在使用此代码
public static String GetCPUId()
{
String processorID = "";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"Select * FROM WIN32_Processor");
ManagementObjectCollection mObject = searcher.Get();
foreach (ManagementObject obj in mObject)
{
processorID = obj["ProcessorId"].ToString();
}
return processorID;
}
Run Code Online (Sandbox Code Playgroud) 如何垂直对齐浮动div中的文本?例如:我有一个固定高度的动态内容.如果内容很小或很大,则必须自动垂直对齐.
谢谢
我有一个具有两个int属性的对象列表.该列表是另一个linq查询的输出.物体:
public class DimensionPair
{
public int Height { get; set; }
public int Width { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想找到并返回列表中具有最大Height属性值的对象.
我可以设法获得值的最高值,Height但不能获得对象本身.
我可以用Linq做到这一点吗?怎么样?
有没有办法将UIDatepicker设置为分钟和秒与小时和分钟
编辑我最后添加了自己的UIPicker类,并自己创建值和标签.
我想知道如何创建VerticalFieldManager,我也想添加一些组件.
c# ×3
blackberry ×1
cocoa ×1
css ×1
erlang ×1
html ×1
iphone ×1
linq ×1
max ×1
object ×1
php ×1
primary-key ×1
python ×1
sqlite ×1
tkinter ×1
uidatepicker ×1
webrequest ×1
winapi ×1
winforms ×1
wmi ×1