winform中调用控制台输出信息...

wojiushiliumang 2009-01-08 10:07:14
现在我有这么一个需求,即在winform程序中进行一些操作,中间我想显示一些提示信息,
但是用winform没有控制台来的爽,就调用了控制台来显示信息,这步我已经做出来了,现
在的问题是:如果在显示信息的过程中,用户关闭了控制台,则整个应用程序都会关闭!
所以请各位高手看有什么办法解决...如果解释的不清楚,我会再补充...
...全文
2604 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
wojiushiliumang 2009-01-14
  • 打赏
  • 举报
回复
没有正确答案 分就平了吧
wojiushiliumang 2009-01-08
  • 打赏
  • 举报
回复
回ls程序运行时会用到多线程而且要一定的时间,我本意是要将程序运行时的信息显示出来,
而这些信息没必要记录在文件中,而且信息量也大,如果用控件的话会出现很多问题,比如重
绘,程序效率...
lunat 2009-01-08
  • 打赏
  • 举报
回复
哦 理解错LZ的意思了

你这个除了一些极端的方法外,并没有什么好的方法

不过...你仅仅想在调试的时候看到输出信息啊....你可以输出的文件里面,也可以在一个控件(比如,label,richtextbox)里面显示出来
仅仅为了方便看到(form里面看到不爽...汗一个)而花费这么大的力气,不值得...

vs的output窗口 我几乎从来没用过

sunshine_anycall 2009-01-08
  • 打赏
  • 举报
回复
哪个是主,哪个是从啊?
HDNGO 2009-01-08
  • 打赏
  • 举报
回复
这个还真不会。。。标记看看的~
zt_100094 2009-01-08
  • 打赏
  • 举报
回复
这个Console是和Form窗口进程关联的。
http://topic.csdn.net/t/20041229/14/3685624.html
如果是想给客户看到,就做一个控件显示提示信息;
只想自己调试程序时看就直接Console.WriteLine,会在VS的Output窗口看到信息
xfreyes 2009-01-08
  • 打赏
  • 举报
回复
应该不行,就跟web似的,你关了网页,进程也就都结束了
GTX280 2009-01-08
  • 打赏
  • 举报
回复
这个Console是和Form窗口进程关联的。
http://topic.csdn.net/t/20041229/14/3685624.html
如果是想给客户看到,就做一个控件显示提示信息;
只想自己调试程序时看就直接Console.WriteLine,会在VS的Output窗口看到信息
wojiushiliumang 2009-01-08
  • 打赏
  • 举报
回复
6楼 网上也找了很多资料,你的不行,我的是要在控制台中输出内容的

7楼 如何监控,监控到了又怎样阻止?
lunat 2009-01-08
  • 打赏
  • 举报
回复
你就整个timer监视控制台进程是否关闭....
fenglm999 2009-01-08
  • 打赏
  • 举报
回复
楼主哪个是主程序,winform还是控制台?用winform调用控制台的话,你可以把在winform中new一个process对象,去调用控制台的exe,也可以返回控制台的输出信息,这样关了控制台应该不会把winform关的吧
wojiushiliumang 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tiger999 的回复:]
贴出来看看你如何调用控制台的
[/Quote]

ls贴错了

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace HTMLTransfer
{
public class ConsoleShow
{
/// <summary>
/// 启动控制台
/// </summary>
/// <returns></returns>
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
/// <summary>
/// 释放控制台
/// </summary>
/// <returns></returns>
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();

}
}
wojiushiliumang 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tzbgaler 的回复:]
控制台是主窗体吧?那主窗体关闭了整个程序就关闭啦
可以在用户关闭控制台时候提示将关闭整个程序
[/Quote]
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace HTMLTransfer
{
public class ConsoleShow
{
/// <summary>
/// 启动控制台
/// </summary>
/// <returns></returns>
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
/// <summary>
/// 释放控制台
/// </summary>
/// <returns></returns>
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();

}
}
wojiushiliumang 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tzbgaler 的回复:]
控制台是主窗体吧?那主窗体关闭了整个程序就关闭啦
可以在用户关闭控制台时候提示将关闭整个程序
[/Quote]

程序是windows应用程序,不是控制台应用程序...
控制台只是在窗体中调用出来显示信息的而已...
不过很明显,它已经是主窗体的概念了,因为关闭它时,
整个程序都会关闭...
tiger999 2009-01-08
  • 打赏
  • 举报
回复
贴出来看看你如何调用控制台的
tzbgaler 2009-01-08
  • 打赏
  • 举报
回复
控制台是主窗体吧?那主窗体关闭了整个程序就关闭啦
可以在用户关闭控制台时候提示将关闭整个程序
wojiushiliumang 2009-01-08
  • 打赏
  • 举报
回复
沉的真快...发现打开控制台后,关闭窗体后程序继续执行(可能是用了线程的原因?)
heroyct 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wojiushiliumang 的回复:]
回ls程序运行时会用到多线程而且要一定的时间,我本意是要将程序运行时的信息显示出来,
而这些信息没必要记录在文件中,而且信息量也大,如果用控件的话会出现很多问题,比如重
绘,程序效率...
[/Quote]


搞个窗口专门显示不更好,想怎么控制就怎么控制,外观也可以自己调节
至于效率,winform本来就不需要很高的效率,现在的电脑配置不是超大的处理有必要考虑效率?1ms和2ms的区别?

LorenLiu 2009-01-08
  • 打赏
  • 举报
回复
LZ为什么不使用Debug类呢?
调用Debug.Write和Debug.WriteLine就可以把信息输出到Output中,和使用控制台是一样的
加载更多回复(3)
完整的服务端及客户端调用程序,在win7+ vs2015环境运行通过. 一、说明 1、创建winfrom应用程序;(或者是控制台项目) 2、在项目添加一个WCF服务,并实现服务; 3、在需要启动WebService服务的地方启动该服务即可; 二、代码如下: 1、新建一个WCF服务——定义服务接口    [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]     public interface ICalculator     {         [OperationContract]         double Add(double n1, double n2);     } 2、新建一个WCF服务——实现服务 public class CalculatorService : ICalculator     {         public double Add(double n1, double n2)         {             return n1 + n2;         }     } 3、添加完WcF服务后会在应用程序配置文件有入下节点                             <!--TestServer.ICalculator服务定义的接口,根据自己定义进行修改-->                                                                   <baseAddresses> <!--这个是要发布的服务地址,可以进行修改-->                                   </baseAddresses>                   4、在要启动服务的地方启动服务监听   public frmMain() { InitializeComponent(); } private void frmMain_Load(object sender, EventArgs e) { try { //打开服务创建监听,并开始监听消息 ServiceHost serviceHost = new ServiceHost(typeof(Service1));//需要using System.ServiceModel; serviceHost.Open(); label1.Text = "服务启动正常"; } catch (Exception ex) { label1.Text = ex.Message; } } 5、下面可以在客户端通过上面的服务地址”http://xxx.xxx.xxx.xx:8733/test/Service1/“对服务进行调用 到这步就实现在控制台实现webService的发布。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧