如何使PowerShell等到Invoke-Item调用完成?我正在调用一个不可执行的项,所以我需要使用Invoke-Item来打开它.
我编写了一个脚本来从HDFS并行获取数据,然后我在for循环中等待这些子进程,但有时它会返回"pid不是这个shell的子代".有时,它运作良好.令人费解.我使用"jobs -l"来显示在后台运行的所有作业.我确信这些pid是shell进程的子进程,我使用"ps aux"来确保这些pid是注释分配给其他进程.这是我的剧本.
PID=()
FILE=()
let serial=0
while read index_tar
do
echo $index_tar | grep index > /dev/null 2>&1
if [[ $? -ne 0 ]]
then
continue
fi
suffix=`printf '%03d' $serial`
mkdir input/output_$suffix
$HADOOP_HOME/bin/hadoop fs -cat $index_tar | tar zxf - -C input/output_$suffix \
&& mv input/output_$suffix/index_* input/output_$suffix/index &
PID[$serial]=$!
FILE[$serial]=$index_tar
let serial++
done < file.list
for((i=0;i<$serial;i++))
do
wait ${PID[$i]}
if [[ $? -ne 0 ]]
then
LOG "get ${FILE[$i]} failed, PID:${PID[$i]}"
exit -1
else
LOG "get ${FILE[$i]} success, PID:${PID[$i]}" …Run Code Online (Sandbox Code Playgroud) 我正在创建一些代码,我可以单击一个按钮,它将刷新我在该工作表上的查询表.
现在,我的问题是,在复制完一些信息之后,我有更多的代码,但是这个代码在刷新开始后立即运行并且信息尚未被替换.
我想创建一个等待刷新完成的时间段,然后其余的代码可以继续.
我不想只等待5秒钟,但是在刷新期间,我不会等待太长或太短,这取决于互联网速度等.
我怎样才能做到这一点?
编辑:
简单代码:
ActiveWorkbook.RefreshAll
Run Code Online (Sandbox Code Playgroud)
在这里,我需要延迟或等待代码,直到所有刷新完成...然后
MsgBox("The Refreshing is Completed!")
Run Code Online (Sandbox Code Playgroud)
那个方向的东西.但是在它实际完成之前它不能说msgbox ....有时候取决于互联网速度,刷新需要更短或更长,所以我希望它是实际刷新时间的变量.
我开始学习一些C并且在研究fork时,等待函数我得到了意想不到的输出.至少对于我来说.
有没有办法从父级创建只有2个子进程?
这是我的代码:
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main ()
{
/* Create the pipe */
int fd [2];
pipe(fd);
pid_t pid;
pid_t pidb;
pid = fork ();
pidb = fork ();
if (pid < 0)
{
printf ("Fork Failed\n");
return -1;
}
else if (pid == 0)
{
//printf("I'm the child\n");
}
else
{
//printf("I'm the parent\n");
}
printf("I'm pid %d\n",getpid());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
I'm pid 6763
I'm pid 6765
I'm pid 6764
I'm …Run Code Online (Sandbox Code Playgroud) 我想创建一个javascript'wait'函数.我该怎么编辑?
function wait(waitsecs) {
setTimeout(donothing(), 'waitsecs');
}
function donothing() {
//
}
Run Code Online (Sandbox Code Playgroud) 嗨我想找到一个等待几毫秒的方法,然后再转到下一行代码,
我已经研究过Thread.Sleep,但这会冻结主窗体,我希望它保持活跃状态.
我尝试了定时器和秒表,当他们勾选时应该将它们发布到控制台时冻结主表单.
我找不到在我想要的等待中使用task.delay或后台工作者的方法.
伪代码:
Wait 2 - 6 seconds
Log "waiting"
Log "waiting"
Log "waiting"
Stop Waiting - Run next line of code.
Run Code Online (Sandbox Code Playgroud)
我尝试过的方法只是冻结表单并在之后填充日志,我只想要一个简单的等待方法而不冻结表单而不必处理被调用的事件,这意味着下一行不会运行.
任何帮助都会很棒,因为我还是c#的新手,它让我有点生气:(
首先,我不是要问与C#相同的问题- Thread.Sleep的替代方案?,或替代在C#中的Thread.Sleep?.我不认为我使用它不正确,需要一个真正的替代特定情况.
在代码分析运行期间,我看到了一个令人惊讶的违规行为:
Thread.Sleep()的使用是有缺陷设计的标志.
我们都知道线程创建很昂贵,线程中的阻塞意味着池上的争用.我们也知道每个线程将分配一个兆内存,因此它应该有一个短的寿命,在UI上阻塞是邪恶的,使用睡眠时间是不可靠的等等.这导致我的观点,如果你真的需要执行睡觉,如果不是Thread.Sleep你应该使用什么?
Peter继续提到零睡眠是Thread.Sleep唯一正确使用放弃线程的时间片并允许其他线程处理的唯一正确用法.然后更可怕的是,这仅仅是因为非托管线程的限制,如果在CLR中重新实现将产生在应用程序中使用Thread.Sleep的副作用.事实上,常见的不良用法的所有要点都是不良用法的好例子.
我在生产代码中有以下情况,使用Thread.Sleep非常成功:
在这种情况下不使用Thread.Sleep,我还有其他选择吗?紧密的循环往往会让事情变得更糟,我不相信这会使它的使用变成"设计缺陷",尤其是因为UI上没有任何东西,只有后台线程.在多线程环境中等待其他事物以及影响代码的外部因素,这只是软件的本质,有时您需要等待......
祝你圣诞快乐.
我的Angular 4应用程序不会等待.
我希望在我调用API之前放慢速度.
但我只是继续撞墙.
我在我的代码中使用了HttpInterceptor.
但是这些Observable只会爆炸.
不要太鄙视.
下面你会发现我的尝试.
export class ApiUrlInterceptor implements HttpInterceptor {
constructor(private http: Http) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return Observable.create(observer => {
setTimeout(() => {
observer.next(true); //Not sure why I do this
const start = Date.now();
console.log(`Request for ${req.url}`);
return next.handle(req).do(event => {
if (event.type == HttpEventType.Response) {
const elapsed = Date.now() - start;
console.log(`Request for ${req.urlWithParams} took ${elapsed} ms.`);
}
});
}, 1000);
});
}
}
Run Code Online (Sandbox Code Playgroud)
结果是调用了API.
但没有安装调用者的结果
我的Observable似乎陷入困境.
我运气不好
我很清楚这是Angular中的反模式"不要等待随机数",而是构建你的应用程序,这样你就不需要了.我的实际用例是, …
wait rxjs angular-http-interceptors angular angular-httpclient
我在bash中执行一个简单的脚本时遇到问题.脚本是这样的:
#! /bin/sh
read -p 'press [ENTER] to continue deleting line'
sudo sed -ie '$d' /home/hpccuser/.profile
Run Code Online (Sandbox Code Playgroud)
当我用./script执行脚本时,输出如下:
press [ENTER] to continue deleting line./script: 3: read: arg count
[sudo] password for user
Run Code Online (Sandbox Code Playgroud)
我直接在终端中运行read命令(从脚本复制并粘贴到终端),它工作正常; 它等待一个ENTER被击中(就像一个暂停).
我试着寻找答案,发现了一些但对我不起作用.我想在开始另一个公共void方法之前等待5秒钟.线程睡眠不适合我.请提出你的建议,如果有一种"wait()"方式而不使用Threads我很想知道.
public void check(){
//activity of changing background color of relative layout
}
Run Code Online (Sandbox Code Playgroud)
我想在更改相对布局颜色之前等待3秒钟.