我的Windows窗体上有自定义用户控件.此控件上有几个标签.
我将在我的表单上动态显示这些控件的数组,其中包含不同的数据位.
我想要做的是知道当我点击它时选择了哪个用户控件.
当我单击用户控件上的空白区域时,这会起作用,但是,如果单击用户控件上的任何标签,它将无法识别用户控件单击.
有关如何进行完全用户控制点击的任何想法,即使点击控件上的标签?
如果这个问题不明确,或者您需要更多信息,请发表评论.
我在c#中这样做.
谢谢!
我有一个ruby应用程序,使用反引号执行ant作为子进程.这没有任何问题.当我执行put时ant,ruby等待子进程,ant,完全完成,然后将输出打印到stdout.如何让ruby连续打印子进程的输出?
在此之前,我询问了一种在给定条件下执行方法的巧妙方法 " Ruby是一种在条件上执行函数的巧妙方法."
解决方案和响应时间很长,但是,在实现时,拥有lambda的哈希会很快变得丑陋.所以我开始尝试.
以下代码有效:
def a()
puts "hello world"
end
some_hash = { 0 => a() }
some_hash[0]
Run Code Online (Sandbox Code Playgroud)
但是,如果我将它包装在一个类中它停止工作:
class A
@a = { 0 => a()}
def a()
puts "hello world"
end
def b()
@a[0]
end
end
d = A.new()
d.b()
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它应该停止工作,任何人都可以建议如何使它工作?
嘿伙计们,我正在尝试练习C++,而在这样做时我遇到了代码中的问题.我动态创建一个字符数组,然后对于每个数组索引,我想用一个整数填充该元素.我尝试将整数转换为字符,但这似乎不起作用.打印出数组元素后,什么都没有出来.我很感激任何帮助,我对此很新,谢谢.
char *createBoard()
{
char *theGameBoard = new char[8];
for (int i = 0; i < 8; i++)
theGameBoard[i] = (char)i; //doesn't work
return theGameBoard;
}
Run Code Online (Sandbox Code Playgroud)
以下是我最终如何做到这一点.
char *createBoard()
{
char *theGameBoard = new char[8];
theGameBoard[0] = '0';
theGameBoard[1] = '1';
theGameBoard[2] = '2';
theGameBoard[3] = '3';
theGameBoard[4] = '4';
theGameBoard[5] = '5';
theGameBoard[6] = '6';
theGameBoard[7] = '7';
theGameBoard[8] = '8';
return theGameBoard;
}
Run Code Online (Sandbox Code Playgroud) 我一直在追逐在Delphi 2007 for Win32中构建的DLL中的内存泄漏.如果在卸载DLL时线程仍然存在,则不会释放threadvar变量的内存(在卸载DLL时没有对DLL进行活动调用).
问题:有没有办法让Delphi释放与threadvar变量相关的内存?它并不像不使用它们那么简单.许多现有的Delphi组件都使用它们,所以即使DLL没有明确声明它们,它最终也会使用它们.
一些细节
我已经将它跟踪到一个LocalAlloc调用,该调用是为了响应threadvar变量的使用而发生的,这是Delphi在Win32中围绕线程本地存储的"包装器".好奇的是,分配调用是在Delphi源文件sysinit.pas中.相应的LocalFree调用仅针对获取DLL_THREAD_DETACH调用的线程发生.如果应用程序中有多个线程并卸载DLL,则不会DLL_THREAD_DETACH调用每个线程.DLL得到了一个DLL_PROCESS_DETACH没有别的东西; 我相信这是预期和有效的.因此,在其他线程上进行的任何线程本地存储分配都会泄露.
我用一个简短的C程序重新创建它,启动几个"工作"线程.它在主线程上加载DLL(通过LoadLibrary),然后调用工作线程上的导出函数.从Delphi DLL导出的函数为threadvar整数变量赋值并返回.然后C程序卸载DLL(通过主线程上的FreeLibrary)并重复.在大约32,000次迭代之后,Process Explorer中显示的进程内存使用量增长到130MB以上.我也用umdh更准确地验证了它.UMDH显示每个实例丢失24个字节.但Process Explorer中的130MB似乎表明每次迭代大约4K; 我猜测基于此每次都会泄露4K片段,但我不确定.
为了澄清,这里是threadvar声明和整个导出函数:
threadvar
threadint : integer;
function Startup( ulID: LongWord; hValue: Longint ): LongWord; stdcall;
begin
threadint := 123;
Result := 0;
end;
Run Code Online (Sandbox Code Playgroud)
谢谢.
我在使用Windows Powershell 2.0运行Java程序时遇到问题.任何有关这方面的帮助将不胜感激.我想要字符串"Hello World!" 打印到Powershell主控制台窗口.相反,它被打印到一个单独的进程窗口然后突然关闭.我不知道如何告诉powershell将生成的java进程的stdout重定向到当前的PowerShell控制台.基本上,我想要的行为就像我在DOS shell下运行java时所获得的那样.
我的测试类是:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}
Run Code Online (Sandbox Code Playgroud)
我的PowerShell 2.0代码是这样的:
set-item -path Env:CLASSPATH -value C:\Test
"CLASSPATH = $Env:CLASSPATH"
[Diagnostics.Process]::Start('java.exe','-classpath $Env:CLASSPATH C:\
Test\HelloWorldApp')
Run Code Online (Sandbox Code Playgroud)
或者,我尝试像这样运行它,就像我使用常规DOS shell一样,希望输出显示在同一个控制台中:
java.exe -classpath $Env:CLASSPATH C:\Test\HelloWorldApp
Run Code Online (Sandbox Code Playgroud)
它会导致错误.我收到此错误:
PS >C:\Test\Test.ps1
CLASSPATH = C:\Test
java.exe : java.lang.NoClassDefFoundError: C:\Test\HelloWorldApp
At C:\Test\Site.ps1:3 char:5
+ java <<<< -classpath $Env:CLASSPATH C:\Test\HelloWorldApp
+ CategoryInfo : NotSpecified: (java.lang.NoCla...e\HelloWorldApp:
String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Exception in thread "main"
Run Code Online (Sandbox Code Playgroud)
据我所知,我的args是正确的,因为这是PCEX(http://pscx.codeplex.com …
我有这个
var n = ItemList.Select(s => new { s.Vchr, s.Id, s.Ctr, s.Vendor, s.Description, s.Invoice }).ToList();
n.AddRange(OtherList.Select(s => new { s.Vchr, s.Id, s.Ctr, s.Vendor, s.Description, s.Invoice }).ToList(););
Run Code Online (Sandbox Code Playgroud)
如果允许,我想这样做
n = n.Distinct((x, y) => x.Vchr == y.Vchr)).ToList();
Run Code Online (Sandbox Code Playgroud)
我尝试使用通用的LambdaComparer,但由于我使用的是匿名类型,因此没有类型与之关联.
"帮助我Obi Wan Kenobi,你是我唯一的希望"
使用Perl,处理不同开发与生产库路径的简单方法是什么?我想使用我的本地盒子路径进行测试,但是当我启动时,我希望它自动指向生产库路径.
这是我一直试图追踪几个月的问题.我有一个运行java应用程序来处理xml提要并将结果存储在数据库中.存在非常难以追踪的间歇性资源问题.
背景: 在生产盒(问题最明显的地方),我没有特别好的访问框,并且无法运行Jprofiler.那个盒子是64位四核,8GB机器运行centos 5.2,tomcat6和java 1.6.0.11.它从这些java-opts开始
JAVA_OPTS="-server -Xmx5g -Xms4g -Xss256k -XX:MaxPermSize=256m -XX:+PrintGCDetails -
XX:+PrintGCTimeStamps -XX:+UseConcMarkSweepGC -XX:+PrintTenuringDistribution -XX:+UseParNewGC"
Run Code Online (Sandbox Code Playgroud)
技术堆栈如下:
我能解决的最接近问题的是32位机器,内存要求较低.我确实有控制权.我已经使用JProfiler探测它并修复了许多性能问题(同步问题,预编译/缓存xpath查询,减少了线程池,删除了不必要的hibernate预取,以及在处理过程中过度热心的"缓存变暖").
在每种情况下,分析器都会将这些资源显示为由于某种原因而占用大量资源,并且一旦发生变化,这些资源就不再是主要资源.
问题: JVM似乎完全忽略了内存使用设置,填满了所有内存并且没有响应.对于面向客户的人来说,这是一个问题,他们期望定期投票(5分钟和1分钟重试),以及我们的运营团队,他们经常被告知箱子已经无响应并且必须重新启动它.这个盒子上没有其他重要的东西.
问题似乎是垃圾收集.我们正在使用ConcurrentMarkSweep(如上所述)收集器,因为原始STW收集器导致JDBC超时并变得越来越慢.日志显示,随着内存使用量的增加,这开始引发cms失败,并回到最初的世界收藏家,然后似乎没有正确收集.
然而,运行jprofiler,"运行GC"按钮似乎很好地清理内存而不是显示增加的占用空间,但由于我无法将jprofiler直接连接到生产盒,并且解决已证实的热点似乎无法正常工作我是留下了调整垃圾收集盲人的伏都教.
我尝试过的:
不幸的是,问题也偶尔会出现,它似乎是不可预测的,它可以运行几天甚至一周而没有任何问题,或者它可以在一天内失败40次,而且我唯一可以看到的是一致的是垃圾收集正在起作用.
任何人都可以提出以下建议:
a)为什么JVM在配置为最大值小于6时使用8个物理演出和2 gb交换空间
.b)对GC调整的引用实际上解释或给出了合理的示例什么样的设置使用高级集合.
c)对最常见的java内存泄漏的引用(我理解无人认领的引用,但我的意思是在库/框架级别,或者在数据结构中更像inherenet,比如hashmaps).
感谢您提供的任何和所有见解.
编辑
Emil H:
1)是的,我的开发集群是生产数据的镜像,直到媒体服务器.主要的区别是32/64bit和可用的RAM量,我无法轻易复制,但代码和查询和设置是相同的.
2)有一些遗留代码依赖于JaxB,但在重新排序作业以试图避免调度冲突时,我通常会删除执行,因为它每天运行一次.主解析器使用调用java.xml.xpath包的XPath查询.这是一些热点的来源,其中一个查询没有被预编译,两个对它们的引用都是硬编码的字符串.我创建了一个线程安全缓存(hashmap),并将对xpath查询的引用考虑为最终的静态字符串,从而显着降低了资源消耗.查询仍然是处理的很大一部分,但应该是因为这是应用程序的主要责任.
3)另外一个注释,另一个主要消费者是来自JAI的图像操作(从饲料中重新处理图像).我不熟悉java的图形库,但从我发现它们并没有特别漏洞.
(感谢目前为止的答案,伙计们!)
更新:
我能够使用VisualVM连接到生产实例,但它已禁用GC可视化/运行GC选项(尽管我可以在本地查看).有趣的是:VM的堆分配服从JAVA_OPTS,并且实际分配的堆正好坐在1-1.5 gigs,并且似乎没有泄漏,但是盒级监控仍显示泄漏模式,但它是没有反映在VM监控中.这个盒子上没有别的东西在跑,所以我很难过.
设计问题 - 多态事件处理
我目前正在尝试减少当前项目中的事件句柄数量.我们有多个通过USB发送数据的系统.我目前有一个例程来读取消息并解析初始标头详细信息以确定消息来自哪个系统.标题稍有不同,所以我创建的EventArgs不一样.然后我通知所有"观察员"这一变化.所以我现在所拥有的是以下内容:
public enum Sub1Enums : byte
{
ID1 = 0x01,
ID2 = 0x02
}
public enum Sub2Enums : ushort
{
ID1 = 0xFFFE,
ID2 = 0xFFFF
}
public class MyEvent1Args
{
public Sub1Enums MessageID;
public byte[] Data;
public MyEvent1Args(Sub1Enums sub1Enum, byte[] data)
{
MessageID = sub1Enum;
Data = data;
}
}
public class MyEvent2Args
{
public Sub2Enums MessageID;
public byte[] Data;
public MyEvent2Args(Sub2Enums sub2Enum, byte[] data)
{
MessageID = sub2Enum;
Data = data;
}
}
Run Code Online (Sandbox Code Playgroud)
Form1代码
public …Run Code Online (Sandbox Code Playgroud)