我正在使用ThreadPool.QueueUserWorkItem来播放一些声音文件而不是挂起GUI.
它有效,但有不良副作用.
在执行QueueUserWorkItem CallBack Proc时,没有什么可以阻止它启动新线程.这会导致线程中的样本重叠.
我怎样才能使它等待已经运行的线程完成运行,然后才运行下一个请求?
编辑: private object sync = new Object();
lock (sync) {
.......do sound here
}
这很有效.按顺序播放声音.
但是当一个正在播放的声音请求结束之前我继续发送声音请求时,一些样本会被播放多次.将调查.
编辑:上面是锁定护卫@Aaronaught提到的结果?
我是编程新手并遇到以下代码问题的新手:
private string alphaCoords(Int32 x)
{
char alphaChar;
switch (x)
{
case 0: alphaChar = 'A'; break;
case 1: alphaChar = 'B'; break;
case 2: alphaChar = 'C'; break;
case 3: alphaChar = 'D'; break;
case 4: alphaChar = 'E'; break;
case 5: alphaChar = 'F'; break;
case 6: alphaChar = 'G'; break;
case 7: alphaChar = 'H'; break;
case 8: alphaChar = 'I'; break;
case 9: alphaChar = 'J'; break;
}
return alphaChar.ToString();
}
Run Code Online (Sandbox Code Playgroud)
编译器说:使用未分配的局部变量'alphaChar'
但我正在我的交换机块中分配它.
我确定这是我的错,因为我对编程知之甚少.
请指教.
谢谢.
以下代码是我的应用程序中的服务器代码:
private int serverPort;
private Thread serverThread = null;
public void networkListen(int port){
serverPort = port;
if (serverThread == null){
Runnable serverRunnable = new ServerRunnable();
serverThread = new Thread(serverRunnable);
serverThread.start();
} else {
}
}
public class ServerRunnable implements Runnable {
public void run(){
try {
//networkConnected = false;
//netMessage = "Listening for Connection";
//networkMessage = new NetworkMessage(networkConnected, netMessage);
//setChanged();
//notifyObservers(networkMessage);
ServerSocket serverSocket = new ServerSocket(serverPort, backlog);
commSocket = serverSocket.accept();
serverSocket.close();
serverSocket = null;
//networkConnected = true;
//netMessage = "Connected: …Run Code Online (Sandbox Code Playgroud) 我正在制作服务器/客户端应用程序.
我将服务器套接字设置为侦听,并设置BeginAccept()方法.当我关闭服务器套接字(Socket.Close())以关闭服务器时,从BeginAccept()方法的异步回调方法抛出一个异常.我检查了异常,我发现异常这样说:
消息"无法访问名为"System.Net.Sockets.Socket"的已处置对象.对象名称:"System.Net.Sockets.Socket"." 串
在我看来,这只是这个:"当我调用Socket.Close()方法时,套接字被处理,但是在套接字关闭之前没有释放回调."
我在网上搜索并发现这不是错误,而是取消了beginaccept的设计异常.
我的问题如何处理这个除外?需要进行哪些处理?
我只是将它视为正常事件:
OnNetworkEvents eventArgs = new OnNetworkEvents(false, "Ready", e.Message);
OnUpdateNetworkStatusMessage(this, eventArgs);
Run Code Online (Sandbox Code Playgroud)
任何评论仍然欢迎.
问候.我有以下课程:
public class Ship
{
public enum ValidShips
{
Minesweeper,
Cruiser,
Destroyer,
Submarine,
AircraftCarrier
}
public enum ShipOrientation
{
North,
East,
South,
West
}
public enum ShipStatus
{
Floating,
Destroyed
}
public ValidShips shipType { get; set; }
public ShipUnit[] shipUnit { get; set; }
public ShipOrientation shipOrientation { get; set; }
public ShipStatus shipStatus { get; set; }
public Ship(ValidShips ShipType, int unitLength)
{
shipStatus = ShipStatus.Floating;
shipType = ShipType;
shipUnit = new ShipUnit[unitLength];
for (int i = 0; …Run Code Online (Sandbox Code Playgroud) 你能否告诉我如何暂停我的程序500毫秒然后继续?
我读Thread.Sleep(500)的不好,因为它阻止了GUI线程.
使用计时器会触发回调......
我只想等待500毫秒然后继续下一个声明.
请指教.
编辑:我需要显示状态栏消息500毫秒,然后用另一个消息更新消息.对不起,我的意思是500不是50.
编辑:我明白你所说的话.但是:[我只想等待500ms然后继续下一个声明.]我认为因为它是如此短的间隔我将在主GUI线程上做一个Thread.Sleep(500).否则我将不得不重写大量代码以适应500毫秒的这个短暂间隔.
编辑:我将尝试重新格式化我的状态消息,因此不需要暂停.
我可以将a的文本更改JTextArea为粗体(附加文本),然后恢复正常,它是否只显示粗体文本,其余部分正常显示?
也可以将内容JTextArea保存为RTF文档?
我在c#中用客户端/服务器编程做了一些阅读.我对这个过程非常熟悉,可以提出以下问题:
我如何通过tcp/ip而不仅仅是字符串传输结构对象?
我的应用程序是一个具有聊天功能的联网游戏.所以我不想只传输文本,而是想要构建一个包含两个字段的数据结构或类结构:i.包类型ii.数据包类型的数据
我会在应用程序执行期间需要时传输它,并在接收端解码数据对象并将其放在它所属的位置.
我不寻找代码,只是一些想法和搜索语句,我可以提供给谷歌,所以我会; 有一个更好的理解.
香港专业教育学院阅读有关序列化/反序列化,是他的方式去?
谢谢.
我已经检查了相关主题但仍然需要进一步指导的帖子.
我有一个网页,我遇到了麻烦.它工作正常:您从下拉菜单中选择并更新图像.
问题是手动刷新页面时:显示初始图像,但下拉菜单选项保持不变; 好吧,我解决了这个问题.
真正的问题是刷新后,当我选择一个新项目时,由于某种原因显示刷新前的项目.
如何更改此选项以便在显示刷新后显示新选择而不是前一个选择?
我的代码在Chrome,Firefox和Safari中运行良好,但不适用于IE9.
这是我正在使用的JavaScript代码:
function doMillviewInitialise()
{
window.document.forms[0].reset();
}
Run Code Online (Sandbox Code Playgroud)
这是HTML:
<form>
<select id="millviewStyle" onchange="doMillview();">
<option value="self">Millview @ Guygar.com©</option>
<option>----------------------</option>
<option value="midnightExpress">Midnight Express</option>
<option value="turnedOn">Turned On</option>
<option value="storage">Storage</option>
<option value="plasticStress">Plastic Stress</option>
<option value="mirrorEffect">Mirror Effect</option>
<option value="okComputer">OK Computer</option>
<option value="repertoire">Repertoire</option>
<option value="calibrate">Calibrate</option>
<option value="hysteria">Hysteria</option>
<option value="lastExit">Last Exit</option>
</select>
</form>
Run Code Online (Sandbox Code Playgroud) 我是应用程序开发方面的初学者.
到目前为止,我已经在C#中开发了BattleShips的点对点游戏,并在Java中开发了Connect 4的点对点游戏.
对于我的下一个项目,我决定去多媒体.
我想实现一个点对点聊天程序,它使用音频/视频流到每个客户端以及文本聊天和文件传输.我想在C#中实现它.
我的问题应该从哪里开始?
我已阅读SO和其他各种来源,但由于我缺乏经验,它仍然被证明是神秘的.
任何新手级别的提示都是最受欢迎的,即寻找相对容易理解的教程.