如果我有一个包含各种几何形状(线条,矩形,圆形等)的大图,那么线程需要花费大量时间来绘制所有内容.但在现实生活中,一栋建筑由一个以上的工人建造.因此,如果绘图是建筑物而线程是构建器,那么绘制速度会快得多.但我想知道如何.
你能告诉我怎么样吗?它是否可能(虽然我已经问过,答案是"是")?是否值得使用?有什么风险?
如果有我错过的问题,请告诉我他们并回答他们.
谢谢!
到目前为止,我一直在尝试通过在项目中立即实现线程来掌握线程.我一直试图这样做很长一段时间.但这没有产生任何结果,也没有给我任何线程经验.尝试给我的唯一一点就是C#中的线程有许多重要的改进.
我找不到任何关于线程的简单练习.我正在寻找你必须制作不同简单的控制台应用程序的练习.我正在寻找简单的练习,这样我就可以了解在处理线程时如何工作并掌握这个想法.我看过一本难以编程的练习书随着问题的数量变得越来越难.我正在寻找类似的东西.之后我会继续处理更复杂的东西,并尝试在我的项目中添加线程(使用Windows窗体制作).
我在哪里可以找到关于C#中线程的练习/练习册?
编辑:
我不是在寻找任何教程 - 我可以自己找到它们.我只在寻找练习和练习.如果没有这样的练习,请告诉我.
我有一组N个不同的数字经常变化.每次更改后,两个或更多数字都有可能变得相等,我不希望这样.数字N可以与最大可能整数一样大.知道经常发生变化,我不想在每次更改后将每个数字与其余数字进行比较.
如何快速查找阵列中是否至少有2个相等的数字?
language-agnostic arrays algorithm hashmap binary-search-tree
可以通过将"AllPaintingInWmPaint","UserPaint"和"DoubleBuffer"ControlStyles的值设置为"true"(this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true))来完成对整个表单的双缓冲.
但是System.Windows.Forms.Panel不会发生这种情况,因为该类不允许我这样做.我找到了一个解决方案:http://bytes.com/topic/c-sharp/answers/267635-double-buffering-panel-control.我也试过这个:Winforms Double Buffering.它是滞后的,即使它用在一个小图纸上,我有一些我在表格中使用的自定义资源和其他东西,因为我不会把整个表格变成一张图纸.第二个似乎会引起问题.还有其他方法吗?
我问这个是因为我不希望在调整表单大小时,面板上的绘图一直闪烁.如果有办法在没有双缓冲的情况下摆脱闪烁,我会很高兴知道.
是否有一个可以用作变量的粗俗部分?
例如:我想将整数1和3分开.结果为int0,double结果为0,333333333.但是,我希望结果是准确的1/3,然后在程序中的其他方程中使用它.
是否有一个类似于integer(int),decimal(double)等的变量(以类似的方式声明和使用)?或者我必须自己制作一个?
起初我在想如何自己做,但我失败了.
谢谢!
好...
在同一个程序中看起来像WinForms和Threading是我无法轻易掌握的东西.
我正在尝试从两个图片框(使用按钮)和文本框中制作自定义数字向上.是的,我可以使用默认的NumericUpDown表单,但我想做一个不同的表单.
我试图用计时器(System.Windows.Forms.Timer)来做到这一点.问题是当一个计时器遇到"Thread.Sleep(int)"时,整个程序"陷入睡眠".
我试过线程.某些类型的线程无法控制UI.然后我尝试了这个
private void declare_thread()
{
//some work
Thread delay = new Thread(new ThreadStart(delay0));
delay.Start();
//some more work
}
//other functions
private void delay0()
{
//delay_for_500ms.WaitOne();
this.Invoke((ThreadStart)delegate()
{
Thread.Sleep(500);
if (is_mouse_down)
timer1.Enabled = true;
});
}
Run Code Online (Sandbox Code Playgroud)
结果与我仅使用计时器的结果相同.
所以,我想制作自定义数字向上.但我无法做到对.我知道我做错了.我想创建一个可以控制UI的线程,并且在调用"Thread.Sleep(int)"时不会使整个程序暂停.
请给我初学者的答案.到目前为止,我还没有找到一个可以向我展示正确方法的好答案,而且很容易理解.
好的,我在理解float属性的行为时遇到了问题.
页面宽度为750像素.为了使它位于屏幕的中心,我使用了以下代码:
<div align="center">
<div align="left" style="width:750px; border-style:double;">
stuff
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
主750 px宽容器中的元素是具有以下样式的其他容器:
div.infoCont //these containers usualy have two more containers within- for an image and text
{
width: 740px;
position: relative;
left: 2px;
border-style: double; //for debugging
float: left;
}
div.textContNI //text only
{
width: 730px;
float: left;
clear: right;
border-style: double; //for debugging
}
Run Code Online (Sandbox Code Playgroud)
小容器表现正常(它们应该是,因为它们的位置和我想要的方式一样大).但是主容器的高度比较小的容器的总高度少了很多...... 0 px.它忽略了所有较小容器的高度.
这可以通过在主容器的结束标记之前添加文本来"修复".我还可以使用<br>标签操作高度而不使用文本:高度变得与边框的总高度一样大.另一种"修复"问题的方法是添加float:left;样式,但是将容器放在窗口的左侧,我不能拥有它.
我错过了什么,我不知道它是什么.
为什么主容器会忽略其中容器的总高度,我该如何处理这个错误呢?
我是新的矢量.我正在尝试将对象添加到矢量中.但程序无法编译,因为我的代码有问题.但我不知道它是什么.错误是:
error C2664: 'void std::vector<_Ty>::push_back(_Ty &&)' : cannot convert parameter 1 from 'Line (void)' to 'Line &&'
Run Code Online (Sandbox Code Playgroud)
代码是:
Line help_line ();
cin >> ln_quan;
vector <Line> figure_line;
for (int i = 0 ; i < ln_quan ; i++)
{
figure_line.push_back(help_line);
}
Run Code Online (Sandbox Code Playgroud)
编译器说错误位于第6行(figure_line.push_back(help_line);).
我放弃了试图找到一个解释如何添加对象的教程(在做这些事情时我很容易放弃......).
'Line(void)'和'Line &&'是什么意思?'Line(void)'是'Line'类吗?如果是这样,在这种情况下'(void)'是什么意思?
我见过使用字符数组的教程,以便用字符串对象演示一些东西.例如,教程:
http://www.cplusplus.com/reference/string/string/copy/
http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/
我见过没有使用char数组的教程来演示一些东西.在学校,老师也不使用任何阵列.对我来说,在我阅读教程时,使用数组有点令人困惑(知道我还是C++的初学者).
我只是想知道为什么有教程使用char数组来显示一个或多个字符串对象可以做的事情.
当我声明一个数组时,所有变量/对象都被声明.但是对象会发生什么,如果他们的类有构造函数?我正在使用的类有2个构造函数 - 一个没有参数,一个有一些参数.声明后第一个构造函数是否会激活?或者没有构建器会激活?
如果第一种情况发生,我将不得不创建一个替换构造函数的函数.
那么,新声明的数组中的对象会发生什么?