将两个参数传递给线程池上的新线程有时会很复杂,但看起来使用lambda表达式和匿名方法,我可以这样做:
public class TestClass
{
public void DoWork(string s1, string s2)
{
Console.WriteLine(s1);
Console.WriteLine(s2);
}
}
try
{
TestClass test = new TestClass();
string s1 = "Hello";
string s2 = "World";
ThreadPool.QueueUserWorkItem(
o => test.DoWork(s1, s2)
);
}
catch (Exception ex)
{
//exception logic
}
Run Code Online (Sandbox Code Playgroud)
现在,我肯定简化了这个例子,但这些要点是关键:
这有什么问题吗?
另一种方法是创建一个实现具有3个成员的不可变类型的新类:test,s1和s2.这似乎是额外的工作,在这一点上没有任何好处.
当我进行git推送时,我看到以下内容:
warning: updating the currently checked out branch; this may cause confusion,
as the index and working tree do not reflect changes that are now in HEAD.
Run Code Online (Sandbox Code Playgroud)
我用Google搜索了这条消息,我所能找到的只是一个git邮件列表讨论,作者试图确切地决定如何使这个消息更好地与我沟通真正的问题是什么.
我是怎么造成这种情况的,我该如何解决?
如何使用奇数或偶数索引号筛选出数组条目?
Array
(
[0] => string1
[1] => string2
[2] => string3
[3] => string4
)
Run Code Online (Sandbox Code Playgroud)
就像,我希望它从数组中删除[0]和[2]条目.或者说我有0,1,2,3,4,5,6,7,8,9 - 我需要删除0,2,4,6,8.
是否可以将switch语句的结果赋给变量.
例如,而不是:
switch ($Extension)
{
doc {$Location = "C:\Users\username\Documents\"; break}
exe {$Location = "C:\Users\username\Downloads\"; break}
default {$Location = "C:\Users\username\Desktop\"}
}
Run Code Online (Sandbox Code Playgroud)
是否可以做类似的事情:
$Location =
{
switch ($Extension)
{
doc {"C:\Users\username\Documents\"; break}
exe {"C:\Users\username\Downloads\"; break}
default {"C:\Users\username\Desktop\"}
}
}
Run Code Online (Sandbox Code Playgroud)
尝试上述结果将$ location包含整个代码块作为String.
通过浏览器/ URL启动应用程序是否可行?这样做有哪些选择?
我知道用IE和Windows做这件事的方法(通常不起作用).理想情况下,我希望这与浏览器无关.
我们的应用程序是RCP,因此理论上Java Web Start可以工作,我们只需要对我们如何向用户提供应用程序进行一些重大更改,我想避免这些更改.如果有所不同,我们的Web服务器代码目前都是Java.
我几乎放弃了这个,直到我点击苹果网站上的网址,然后又推出了iTunes.
Apple如何做到这一点?
我正在阅读这篇关于处理损坏的状态异常的文章,我遇到了令我困惑的事情.
什么是错误条款?
请参阅以下文章的引用:
错误条件只能从包含意外条件的函数传递给该函数的调用者.异常有权将函数执行的结果从当前函数的作用域传递到堆栈的每一帧,直到它到达知道如何处理意外情况的帧.CLR的例外制度(被称为双通异常系统)异常传递到线程的调用堆栈上的每个前身,与主叫方和诉讼开始,直到某个函数表示将处理异常(这被称为第一通).
然后,异常系统将展开调用堆栈上每个帧的状态,在该位置引发异常和处理异常(称为第二遍).当堆栈展开时,CLR将在展开时运行每个框架中的finally子句和错误子句.然后,执行处理框架中的catch子句.
我已经在我的公司内部构建了一个小的.NET winforms实用程序,并且由于主要界面是一个选项卡控件,我决定为"about box"而不是单独的表单添加一个选项卡.所以,我有一些空间来填写我的盒子.
到目前为止,我有:
剩下相当多的空白空间,我想我可能会尝试添加一些有用的东西......但也许这是不必要的?这是我到目前为止添加的其他内容:
我想如果有一些奇怪的行为,这可能是有用的.
你怎么看?您是否希望在about框中显示一些有用的信息,或者我应该保持简单明了吗?
更新:此问题是由内存使用不良引起的,请参阅底部的解决方案.
这是一些半伪代码:
class ClassA
{
public:
virtual void VirtualFunction();
void SomeFunction();
}
class ClassB : public ClassA
{
public:
void VirtualFunction();
}
void ClassA::VirtualFunction()
{
// Intentionally empty (code smell?).
}
void ClassA::SomeFunction()
{
VirtualFunction();
}
void ClassB::VirtualFunction()
{
// I'd like this to be called from ClassA::SomeFunction()
std::cout << "Hello world!" << endl;
}
Run Code Online (Sandbox Code Playgroud)
C#等价物如下:删除了C#示例,因为它与实际问题无关.
ClassB::VirtualFunction调用函数时为什么不调用函数ClassA::SomeFunction?相反ClassA::VirtualFunction被称为......
当我强制实现虚函数 ClassA :: VirtualFunction时,如下所示:
class ClassA
{
public:
virtual void VirtualFunction() = 0; …Run Code Online (Sandbox Code Playgroud) 免责声明:我是Xcode/iPhone SDK Noob.
我正在尝试建立与现有服务器的客户端TCP/IP连接.连接后,我希望收到一些有关服务器的数据(版本等).
当我建立连接时,NSStreamEventOpenCompleted事件将触发,因此我知道已建立连接.接下来NSStreamEventHasBytesAvailable事件触发,我正在执行以下代码.值71(int)存储在len中,我认为这是正确的.但是,行
[data appendBytes:&buffer length:len];
Run Code Online (Sandbox Code Playgroud)
正在崩溃(我想).没有抛出实际错误但我确实看到 __TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION__即使我已明确添加错误捕获:
case NSStreamEventHasBytesAvailable:
{
NSMutableData *data=[[NSMutableData alloc] init];
uint8_t *buffer[1024];
unsigned int len=0;
len=[(NSInputStream *)stream read:buffer maxLength:1024];
if(len>0){
@try{
[data appendBytes:&buffer length:len];
}
@catch(NSException *ex){
NSLog(@"Fail: %@", ex);
}
[statusLabel setText:[data stringValue]];
//[bytesRead setIntValue:[bytesRead intValue]+len];
}else{
NSLog(@"No Buffer");
}
break ;
}
Run Code Online (Sandbox Code Playgroud) 使用此处的信息:iPhone仅限横向实用程序 - 模板应用程序我能够仅以横向方式启动,使用和维护我的视图.但是,我对轴感到困惑.
绝对轴的行为与预期一致,意味着(0,0)是左上角,(240,0)是顶部中心,(0,320)是左下角等.但是,当我尝试做与之相关的计算时查看我正在绘制我发现x,y被定向为好像纵向左上角是原点.因此,要在我的视图控制器的中心点绘制一些东西,我需要这样做:
CGPoint center = CGPointMake(self.view.center.y, self.view.center.x);
Run Code Online (Sandbox Code Playgroud)
我假设这是因为我的控制器self.view引用的UIView给出了它相对于它的封闭框架的值,这意味着在纵向模式下它的轴的原点位于左上角.
是否有一些简单的方法来解释我错过了?
文档表明转换属性正是我正在寻找的,但是,我在这里遇到了进一步的混乱.涉及3个基本属性:
如果我在viewDidLoad中这样做:
// calculate new center point
CGFloat x = self.view.bounds.size.width / 2.0;
CGFloat y = self.view.bounds.size.height / 2.0;
CGPoint center = CGPointMake(y, x);
// set the new center point
self.view.center = center;
// Rotate the view 90 degrees counter clockwise around the new center point.
CGAffineTransform transform = self.view.transform;
transform = CGAffineTransformRotate(transform, -(M_PI / 2.0));
self.view.transform = transform;
Run Code Online (Sandbox Code Playgroud)
现在根据参考文档,如果未将变换设置为身份变换,则self.view.frame未定义.所以我应该与界限和中心一起工作.
self.view.center现在是正确的,因为我把它设置为我想要的.self.view.bounds看起来没有变化.self.view.frame似乎正是我想要的,但如上所述,该引用声称它是无效的.
因此,虽然我可以得到我认为正确的数字,但我担心我会忽略一些后来会变得麻烦的重要事情. …
.net ×2
iphone ×2
about-box ×1
arrays ×1
c# ×1
c++ ×1
clr ×1
cocoa-touch ×1
deployment ×1
diagnostics ×1
exception ×1
git ×1
java ×1
javascript ×1
lambda ×1
landscape ×1
php ×1
powershell ×1
threadpool ×1
url ×1
xcode ×1