function Person(age,name){
this.name = name;
this.age = age;
this.speak = function(){...}
}
function Person(age,name){
var p = {}
p.name = name;
p.age = age;
p.speak = function(){...}
return p;
}
Run Code Online (Sandbox Code Playgroud)
我看到的唯一区别是使用第一个你必须用new调用让语言知道它构造一个新对象,它本质上只是构造一个对象,其中'this'指的是正在创建的新对象??
就像这样做.
{
age: 12,
name: "mark",
speak: function(){...}
}
Run Code Online (Sandbox Code Playgroud)
第二个返回一个对象,你可以写
Person(12,"mark")
Run Code Online (Sandbox Code Playgroud)
代替
new Person(12,"mark")
Run Code Online (Sandbox Code Playgroud)
所以我想我的问题是,使用第二个版本是否有什么问题,我说的差异是正确的,它们是两者之间的唯一区别吗?
for (int i = 0; i < someList.length;i++){
Button button = new Button();
// Modify some button attributes height,width etc
var request = WebRequest.Create(current.thumbnail);
var response = request.GetResponse();
var stream = response.GetResponseStream();
button.BackgroundImage = Image.FromStream(stream);
stream.Close();
// and then i have these UI components that need updating (imagePanel is a FlowLayoutPanel)
imagePanel.Controls.Add(button);
imagePanel.Refresh();
progBar.PerformStep();
}
Run Code Online (Sandbox Code Playgroud)
所以我目前遇到的问题是我使用webRequest/Response阻止了UI线程.
我猜我想要做的是在for循环的每次迭代中创建并修改另一个线程上的按钮(包括背景图像).
当线程完成时有某种回调来更新UI?
另外我可能需要一些方法将新线程上创建的按钮返回到主线程以更新UI?
我是c#的初学者,并且过去没有真正触及任何多线程,这是不是可以解决这个问题的方法,或者我认为这一切都错了.