private void btnUpload_Click(object sender, EventArgs e)
{
progressbar.value = 10;
RunLongProcess();
progressbar.value = 20;
RunAnotherLongProcess();
progressbar.value = 50;
RunOneMoreLongProcess();
progressbar.value = 100;
}
Run Code Online (Sandbox Code Playgroud)
上面代码的问题是应用程序冻结,我看不到进度条正常运行。
处理这种情况的正确方法是什么?考虑到我不想同时运行两件事,我不确定为什么会发生这种情况。一次只做一件事。我需要刷新应用程序或类似的东西吗?
我在 .NET 4.5 上有一个 C# Windows 窗体应用程序。
此应用程序连接到 USB 设备。
我想同时支持多个会话。
为此,我需要在会话锁定时与该设备断开连接,以允许新会话连接到它。
我使用 SystemEvents.SessionSwitchEventArgs.Reason 来检测此类事件: - SessionSwitchReason.ConsoleDisconnect on session switch - SessionSwitchReason.ConsoleConnect on unlock after session switch
此事件似乎是完美的解决方案,但有时在随机时间(在多次锁定或解锁之后),该事件不会被触发并且 UI 会冻结。值得注意的是,当应用程序在调试器中运行时不会发生这种情况。
我从日志中知道其他一些后台线程仍在正常工作,但 UI 冻结并且未调用事件的订阅函数。
我的代码示例:
程序.cs:
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyProgram
{
static class Program
{
private static Mutex mutex = null;
[STAThread]
static void Main()
{
const string appName = "MyProgram";
bool createdNew;
mutex = new Mutex(true, appName, out …Run Code Online (Sandbox Code Playgroud) 我是Haskell的初学者,我试图编写fibonacci函数,但每次运行它时,我的电脑都会冻结。我不知道为什么。这是我的代码:
fib n = if n<=2 then 1 else (fib n-1)+(fib n-2)
Run Code Online (Sandbox Code Playgroud)
我不知道它是否有任何帮助,但我在 Ubuntu 20.04 中使用 GHC
假设您有一个包含以下列表的变量:
Prelude> arr = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
你也是,
Prelude> arr
[1,2,3,4,5]
Prelude> arr = tail arr
Prelude> arr
Run Code Online (Sandbox Code Playgroud)
为什么编译器现在冻结了?我试图在递归中实现这个代码语句,但这种现象阻止了我的递归正常工作——它不断返回一个空列表错误。
原始问题:
应该使用此方法将JFrame上显示的图像逐渐更改为另一图像。但是,如果没有某种方法可以减慢它的运行速度,它似乎只能从一个图像更改为新图像。为了减慢速度,我放入Thread.sleep(1000),这样更改不会立即发生。但是,有了这一行,我的程序完全死机了。没有错误信息,什么都没有。有人可以帮我吗?建议一种更好的方法来降低它的速度,或解决该问题的方法。
为了澄清起见:int k是更改中的渐进步骤数。k = 1将是即时变化。更大的事情将是逐渐的变化。同时,int控制每个图像显示多少的比例。
public void morphImg(int width, int height, BufferedImage morphImage, int k) {
//creates new image from two images of same size
BufferedImage image2 = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
//get color from original image
Color c = new Color(image.getRGB(i, j));
//get colors from morph image
Color c2 = new Color(morphImage.getRGB(i, j));
for (int l = 1; …Run Code Online (Sandbox Code Playgroud) 有没有办法让jqGrid冻结一个或多个最左边的列,并使列的余额左右滚动?
我在谷歌至少有一个声称在这里做过的人:http://www.trirand.com/blog/?page_id = 393 /discussion / new-free-column-plugin /
...但示例代码消失了.(具有讽刺意味的是,它工作的截屏仍在播放,嘲笑我.)
看起来这里的一些人也使它工作,但不包括代码.
有没有人使用滚动工具在jqGrid中使用该插件或其他类似的插件获得冻结列?任何人都有这个代码工作和方便吗?
我原本以为你会包含那个人的代码,它会自动生成你可以在他的截屏视频中看到的图钉,如果没有,你会让魔法发生......
$(document).ready(function() {
//$("#tblImz").jqGrid().freezingSetup(); // initially tried without this line; same error (reporting different function, natch)
$("#tblImz").jqGrid().freezeColumn(2);
});
Run Code Online (Sandbox Code Playgroud)
......但那给了我......
Microsoft JScript运行时错误:对象不支持属性或方法'freezeColumn'
要么
Microsoft JScript运行时错误:对象不支持属性或方法'freezingSetup'
只是为了好玩,这里是我认为几乎正确的清理代码,取自上面帖子的粘贴.我认为这准确地转发什么提交人[无意中错位了在他的trirand.com论坛上发帖,从两个编辑在这里通过linoj建议.好的,代码转储......
(function ($) {
/**
* jqGrid extension
* Tim Heckel timheckel@gmail.com *
* from here: http://www.trirand.com/blog/?page_id=393/discussion/new-freeze-column-plugin/
* Dual licensed under the MIT and GPL licenses: …Run Code Online (Sandbox Code Playgroud) 我是一个Java Messenger.我做了一个登录对话框,当我点击连接按钮时,在加载时会出现一个动画GIF.
问题是当我的MySQL连接和查询正在处理时,动画GIF停止移动.
我抛出MySQL连接并在新线程中查询但仍然相同:
Thread connectionThread = new Thread(new Runnable() {
public void run() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Database conection
OlaDB.createConnection();
...
Run Code Online (Sandbox Code Playgroud)
我该怎么办才能避免GIF冻结?
循环结束后,所有按钮和文本字段都可用,但循环运行时,无法单击任何按钮和文本字段.我尝试了很多不同的东西,看了很多不同的网站,但没有什么可以帮助我.我不知道出了什么问题!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class J extends JFrame implements ActionListener{
JButton start = new JButton("Start (F12)");
JButton stop = new JButton("Stop");
int i;
JLabel delay = new JLabel("Delay: ");
JTextField delayJTF = new JTextField(4);
int delayS = 0;
GridLayout bl = new GridLayout(10, 10);
public J()
{
super("Auto Clicker");
start.addActionListener(this);
stop.addActionListener(this);
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(bl);
add(delay, BorderLayout.NORTH);
add(delayJTF, BorderLayout.NORTH);
add(start);
add(stop);
setVisible(true);
}
boolean run = false;
public static void main(String[] args) {
J …Run Code Online (Sandbox Code Playgroud) 有谁知道为什么这段代码会降低用户界面的速度:
Thread trdGenerateTrajectory = new Thread(() => HeavyMethod());
trdGenerateTrajectory.Start();
trdGenerateTrajectory.Join();
Run Code Online (Sandbox Code Playgroud)
这应该是在主线程的单独线程中,我是对的吗?如果是这样,为什么运行它会减慢/冻结UL?
编辑:感谢您的评论.我删除了Join(),但它仍然冻结了UI.任何的想法?
更新:HeavyMethod()方法从我创建的Matlab DLL调用方法.dll中的方法为机器人生成操纵轨迹.我的项目是一个重型机器人项目,与许多硬件/设备进行通信.该项目有12名背景工作者和一名计时器.计时器负责更新UI及其上的所有文本/颜色/图像/ .... 到目前为止,我还没有遇到任何与后台工作者和计时器有关的问题,无论他们运行的任务有多重,我都没有看到任何延迟或停止计时器和UI更新.但是,当我在Matlab dll中调用这个特定的方法时,我看到UI的完全停止正在更新,直到方法完成.这就是我的经历:
然后我意识到我的表单上只有一些文本框遇到了这个问题.他们是那些从同一个Matlab dll的另一个方法获取值的人.那时我才意识到这个问题与线程/后台工作者无关,而且与Matlab运行方法的方式有关.也许是单线程!?无论如何,我可能会有所帮助,如果我为这个生成轨迹的特定方法制作单独的dll,所以我创建了另一个dll,但我遇到了完全相同的问题.似乎Matlab dll一次只能运行一个方法,无论你是从不同的线程调用它们,还是从单独的dll调用它们.我相信我应该在另外的SO问题中提出这个问题,但是,在此期间,你对此有何评论?(更新:我没有收到任何回复所以我发布了一个新问题:同时从一个Matlab dll调用两个函数)
我有一个问题,我编写了一个应用程序,它将迭代文件并为每个文件的整数添加+1,直到它达到特定的文件名.问题可能是因为.Net不直接访问本机文件系统,它填满了集合,但在我的情况下需要几年时间,相信我,我在目标文件夹中有26万个文件.迭代甚至没有到达第二个文件.线程完全冻结,没有错误,没有例外.那么有没有办法直接访问本机文件系统而没有任何无用的集合填充?
这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
try
{
foreach (string file in Directory.GetFiles("\\\\Mypcname-PC\\vxheaven\\malware"))
{
count++;
label1.Text = Convert.ToString(count);
if (file.Contains(textBox1.Text))
{
label1.Text = Convert.ToString(count) + " reached the file";
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句.对不起,我的英语不好
问候