java为什么看不到运行窗口,C:为什么运行java.exe的进程工作正常,但窗口没有返回任何输出?...

我创建了一个以java.exe文件为目标的进程。进程应该运行java.jar服务器文件,并继续运行,给出输出反馈,直到服务器崩溃或我强制关闭它。一切正常……服务器正在运行..当我将useshellexecute设置为true时,我可以看到黑色的cmd窗口返回所有的输出。但当我将其设置为false并重定向输出时…窗口是完全空白的(服务器仍在运行),OutputDataReceived事件根本没有触发(我想我曾经触发过一次,但当我关闭窗口时,它似乎是空的),据我所见,StandardOutput.readToEnd()也没有返回任何内容。为什么这个过程没有返回任何输出反馈??这是我的代码:

gameServerProcess = new Process();

gameServerProcess.StartInfo.UseShellExecute = false;

gameServerProcess.StartInfo.RedirectStandardOutput = true;

gameServerProcess.StartInfo.RedirectStandardInput = true;

gameServerProcess.EnableRaisingEvents = true;

gameServerProcess.Exited += new EventHandler(gameServer_WindowExit);

window = new ServerWindow();

gameServerProcess.OutputDataReceived += new DataReceivedEventHandler(window.server_recievedOutputStream);

window.Show();

gameServerProcess.StartInfo.FileName = @"D:\Program Files\Java\jdk1.6.0_12\bin\java.exe";

gameServerProcess.StartInfo.WorkingDirectory = @"D:\Users\Zack\Desktop\ServerFiles\gameserver";

gameServerProcess.StartInfo.Arguments = @"-Xmx1024m -cp ./../libs/*;l2jserver.jar net.sf.l2j.gameserver.GameServer";

gameServerProcess.Start();

gameServerProcess.BeginOutputReadLine();

以及我的“window”窗体类代码,它应该接收带有输出数据的dataReceivedEventargs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Diagnostics;

namespace MWRemoteServer

{

public partial class ServerWindow : Form

{

private delegate void WriteOutputDelegate(string output);

private WriteOutputDelegate writeOutput;

public ServerWindow()

{

InitializeComponent();

logBox.BackColor = Color.White;

logBox.ForeColor = Color.Black;

writeOutput = new WriteOutputDelegate(write);

}

public void server_recievedOutputStream(object sender, DataReceivedEventArgs args)

{

MessageBox.Show("Called window output!");

if (args.Data != null)

{

BeginInvoke(writeOutput, new object[] { args.Data.ToString() });

}

}

private void write(string output)

{

logBox.AppendText(output + Environment.NewLine);

}

}

}

同样,这个过程工作得很好,当useShellExecute设置为true时,我可以看到它提供了我需要获取的所有信息。但当我将其设置为假时,它是空白的,我似乎无法获取任何输出数据!

提前非常感谢…我在这里已经好几个小时了…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值