在程序执行过程中,会启动许多线程.线程数量取决于用户定义的设置,但它们都使用不同的变量执行相同的方法.
在某些情况下,执行中需要清理,其中一部分是停止所有线程,我不希望它们立即停止,我只是设置一个他们检查的变量来终止它们.问题是它可以在线程停止前最多1/2秒.但是,我需要确保在清理可以继续之前所有线程都已停止.清理是从另一个线程执行的,所以从技术上讲,我需要这个线程来等待其他线程完成.
我想到了几种方法,但它们似乎都过于复杂.我希望有一些方法可以等待一组线程完成.有这样的事吗?
谢谢.
我有一个写入日志文件的方法.如果文件存在,它应该附加到它,如果没有,那么我希望它创建一个新文件.
if (!file.exists() && !file.createNewFile()) {
System.err.println("Error with output file: " + outFile
+ "\nCannot create new file.");
continue;
}
Run Code Online (Sandbox Code Playgroud)
我有这个来检查是否可以创建一个文件.file是一个java.io.File对象.createNewFile抛出IOException:没有这样的文件或目录.自从我几周前写这篇文章以来,这种方法一直运作良好,并且最近刚开始这样做,虽然我不知道我能改变什么.我已经检查过,目录存在并且我有权限,但是我认为如果它因任何原因无法生成文件,它应该返回false.
有什么我不想让这个工作吗?
我正在制作一个应该在Windows和Linux上编译的项目.我在Visual Studio中创建了项目,然后为linux创建了一个makefile.我使用VS在Windows中创建了所有文件.
它在VS中编译并运行完美,但是当我运行makefile并运行g ++时,我得到了
$ g++ -c -I include -o obj/Linux_x86/Server.obj src/Server.cpp
cc1plus: error: include: Value too large for defined data type
cc1plus: error: src/Server.cpp: Value too large for defined data type
Run Code Online (Sandbox Code Playgroud)
代码只不过是一个Hello World atm.我只是想在开始开发之前确保一切正常.我试过搜索但无济于事.
任何帮助,将不胜感激.
我有一个dotnet控制台应用程序,需要管理员权限才能运行.我找不到怎么做.在常规项目中,我将添加app.manifest并设置
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
但我无法想象如何在构建中嵌入它.
我该怎么做呢?
程序启动时,会创建一个新的JFrame.用户单击开始按钮后,将创建并启动一个线程.此线程执行的一部分是验证表单上的数据,然后使用该数据执行.一旦数据被验证,线程就会在原始帧上调用dispose(),然后创建一个充当控制面板的新JFrame.
还有一个程序的自动模式,根本不显示任何GUI,此模式从配置文件中读取数据,然后启动执行线程并运行所有内容,但不使用控制面板.
我希望程序在线程完成后结束,但是在GUI模式下,只有用户也关闭了控制面板.是否可以让线程等待帧关闭.我假设框架是从它自己的线程运行的?或者情况并非如此.
谢谢.
我正在考虑为我的课程最后一年项目制作一个简单的游戏引擎.我希望它是模块化和可扩展的,这样如果我有时间,我可以添加新的部件.例如,我将制作一个完全独立于其他系统的图形引擎,一旦完成,我可以添加一个物理引擎等.我还想制作一个工具集来配合这个引擎.对于我想使用C#的工具,但我不确定库.我的问题是,如果我想要一个C#GUI程序,我可以引用一个用C++编写的库吗?如果我在C#中创建了一些库但想在C++游戏中使用它们,那么也会有任何性能问题.
我想尽可能地避免使用C++,我的经验表明,对于一个项目而言,使用C#或Java等开发时间要高得多.我的图形开发将在OpenGL中,这就是我所教的全部内容.我们只用C++完成了这个,但我已经看到像SharpGL这样的项目允许使用C#进行开发.这有什么性能问题吗?我不是在寻找一款速度极快的顶级图形游戏.显示我的引擎工作很可能很简单.我的引擎可能不会那么好,因为我只有一年而且我自己工作.
对此有任何建议将不胜感激.我仍然处于计划阶段,所以彻底改变我想做的事情并不会太多.我想要预先解决我可能遇到的任何重大问题.
谢谢
我有一个扩展Thread的类.这个线程在运行时花费大部分时间睡觉,它将执行检查,如果为true则执行简单操作,然后睡眠1/2秒并重复.
该类还有一个由其他线程调用的公共方法.如果调用它,我希望线程在睡眠时睡眠时间更长,如果不是则立即睡觉.我试图让这个.sleep但似乎这仍然睡在当前的线程,它抱怨方法睡眠是静态的,应该静态访问.
这个程序显示我的问题,当调用CauseSleep时我想让它停止打印数字,直到睡眠结束.
public class Sleeper {
public static void main(String[] args) {
new Sleeper();
}
public Sleeper() {
System.out.println("Creating T");
T t = new T();
System.out.println("Causing sleep");
t.CauseSleep();
System.out.println("Sleep caused");
}
public class T extends Thread {
public T() {
this.start();
}
public void run() {
for (int i = 0; i < 30; i++) {
System.out.println("T Thread: " + i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}
public void CauseSleep() {
try {
this.sleep(2000); …
Run Code Online (Sandbox Code Playgroud) 使用Visual Studio 2017和Dotnet Core 2.0 SDK,我有一个包含多个项目的解决方案。其中一些是测试项目,有些是源项目。
我可以dotnet test
在根解决方案方向上运行,它将尝试在该解决方案的所有项目中发现测试。
但是,源项目没有测试,因此会显示错误。除进程的退出代码为1之外,所有测试都可以运行并通过。这意味着我们的CI构建失败。
有什么办法让它仅在解决方案的测试项目上运行?它们位于文件系统和解决方案目录下的测试目录中,但是我找不到任何过滤它们的方法。
我已经编写了一个Powershell脚本来为测试文件夹中的每个项目运行它,但是我们的CI服务器正在使用Linux和Docker映像microsoft / dotnet:2.0-sdk,因此Powershell脚本不会在那里运行。
我可以用Bash编写它,但是它不能在Windows上运行。
我唯一的另一个想法是为同时具有dotnet和powershell的构建制作自定义docker映像。
powershell continuous-integration unit-testing .net-core visual-studio-2017
我正在制作的程序旨在无人值守运行,因此我将stdout和stderr流重定向到日志文件.虽然这没有任何问题,但我仍在制作和调试软件,我希望它也显示在屏幕上.这可能吗?
重定向我使用过的流
System.setErr(logWriter);
System.setOut(logWriter);
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个运行许多其他程序的Java程序.一旦用户完成,他们就有一个按钮来杀死所有进程,这应该会杀死所有正在运行的东西,但它应该强制执行它们.这些其他进程中的至少一个也是用Java编写的,并且具有许多关闭挂钩,因为它在退出时自动保存首选项文件并杀死它自己启动的进程,例如.
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
if (process != null)
process.destroy();
}
}
Run Code Online (Sandbox Code Playgroud)
当主进程调用destroy时,上面的代码不会在子进程上运行.无论如何,我可以终止进程,这样仍然可以运行吗?
我从Perl移植它会杀死它(9,@ kill_process);
谢谢.
java ×6
.net-core ×2
c# ×2
c++ ×1
file-io ×1
g++ ×1
opengl ×1
performance ×1
powershell ×1
stderr ×1
stdout ×1
uac ×1
unit-testing ×1